1.     Activity 的生命周期相关问题:

Activity 的生命周期介绍?各种操作下,相对应执行了哪些对应的方法?

   经过一个星期对android的具体学习,有了一定了解,有必要对所理解的做一个总结,对今后进一步的掌握android也是种积淀和积累。

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

完全由应用程序管理器控制而不是由系统控制)

   一个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的生命周期

 

 

android 启动生命周期 android的生命周期_生命周期


 

android 启动生命周期 android的生命周期_android 启动生命周期_02


接下来,通过以下一段测试的代码,通过打出的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状态的一致性