您的位置:首页 > 移动开发 > Android开发

android的activity的生命周期

2014-04-07 10:40 302 查看
1.     Activity 的生命周期相关问题:
Activity 的生命周期介绍?各种操作下,相对应执行了哪些对应的方法?
   经过一个星期对android的具体学习,有了一定了解,有必要对所理解的做一个总结,对今后进一步的掌握android也是种积淀和积累。

Android中, Component(Activity,service和broadcast recervices)的生命周期始于其响应一个Intent请求,终于该Component销毁。在这个期间,Component可能处于激活/未激活,可见/不可见的状态.

   Android的生命周期和普通的程序并不相同,我们只能创建Activity,但并不能想销毁就销毁它,这并不由我们自己控制,而是由Android系统自己控制和管理,这点与J2ME有点类似。(J2ME的Midlet生命周期完全由应用程序管理器控制而不是由系统控制)
   一个Activity的全部生命周期由以下方法定义:你可以重写这些方式,当Activity的状态发生改变时可以做一些需要的操作。所有的Activity都是实现OnCreate(Bundle) 来完成一些初始的操作
 
 
 

public class Activity extends ApplicationContext {
     protected void onCreate(Bundle savedInstanceState);
     protected void onStart();
     protected void onRestart();
     protected void onResume();
     protected void onPause();
     protected void onStop();
     protected void onDestroy();
 }

 
以下两幅图,比较清楚得介绍了,Activity的生命周期





 
 
 
接下来,通过以下一段测试的代码,通过打出的Log来看看我们在各种不同的操作下,Activity到底执行了哪些?以及执行顺序?
package com.myandroid.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
 
public class AndroidTest extends Activity
{
    private static final String TAG = "MyNewLog";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle
savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.e(TAG, "onCreate");
    }
   
    public void onStart(){
    super.onStart();
    Log.e(TAG, "onStart");
   
    }
    public void onRestart(){
    super.onRestart();
    Log.e(TAG, "onRestart");
   
    }
    public void onResume(){
    super.onResume();
    Log.e(TAG, "onResume");
   
    }
    public void onPause(){
    super.onPause();
    Log.e(TAG, "onPause");
   
    }
    public  void onStop(){
    super.onStop();
    Log.e(TAG, "onStop");
   
    }
    public  void onDestroy(){
    super.onDestroy();
    Log.e(TAG, "onDestroy");
   
    }
}
1..启动该测试Activity时:
打印顺序:onCreate()->onStart()->onResume()
1.       按BACK键:
打印顺序:onPause()->onStop()->onDestroy()
2.       再重新调用该Activity时:
打印顺序:  onCreate()->onStart()->onResume()
3.       按HOME键时:
打印顺序: onPause()->onStop() (并没有OnDestroy())
4.       再重新调用该Activity时:
打印顺序:onRestart()->onStart()->onResume()或者
打印顺序:onDestroy()->onCreate()->onStart()->onResume()
activity主要生命周期的方法说明:

onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!

onStart():activity变为在屏幕上对用户可见时调用。

onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。

onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!

onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。

onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。

onDestroy():activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用Finish()方法或者系统决定停止该活动以释放资源!
PS:在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!
   通过重写Activity的onSaveInstanceState事件处理函数,你可以使用它的Bundle参数来保存实例的值, 这个处理函数会在Activity的Active生命周期结束时触发,但仅在它不是显式地结束(即异常结束)。因此,它一般用于确保在单个用户会话中的Active生命周期间Activity状态的一致性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: