Activity的生命周期

来源:互联网 发布:modbus通讯协议软件 编辑:程序博客网 时间:2024/05/16 14:19

Activity从建立到销毁的过程中需要在不同的阶段调用7个生命周期的方法。这7个生命周期方法的定义如下:

protected void onCreate(Bundle savedInstanceState)

protected void onStart()

protected void onResume()

protected void onPause()

protected void onStop()

protected void onRestart()

protected void onDestroy()

上面7个生命周期方法分别在4个阶段按一定的顺序进行调用,这4个阶段如下:

l 开始Activity:在这个阶段依次执行3个生命周期方法,分别是onCreateonStartonResume

l Activity失去焦点:如果在Activity获得焦点的情况下进入其它的Activity或应用程序,当前的Activity失去焦点。在这一阶段会依次执行onPauseonStop方法。

l Activity重获焦点:如果Activity重新获得焦点,会依次执行3个生命周期方法,分别是onRestartonStartonResume

l 关闭Activity:当Activity被关闭时系统会依次执行3个生命周期方法,分别是onPauseonStoponDestroy

Activity的生命周期图如下所示:

在上图中,Activity有三个关键的循环: 

整体生命周期:从onCreate(Bundle)开始到onDestroy()结束。ActivityonCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,onDestory()中停止线程。

可视生命周期:从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart()onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。

焦点生命周期:从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumedpaused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。