Activity生命周期理解

Posted de1021

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity生命周期理解相关的知识,希望对你有一定的参考价值。

android应用程序运行时,Activity的活动状态由Android以Activity栈的形式管理,当前活动的Activity位于栈顶。随着应用程序之间的切换、关闭等,每个Activity都有可能从活动状态转入非活动状态,当然,也可以从非活动状态转入活动状态。

下面,我们借助一个关于Activity生命周期模型图进行理解。

技术图片

 

 

 

 从图中可以看出来,在Activity的生命周期中,会有如下方法会被系统回调:

  1. void onCreate(Bundle savedInstanceState):创建Activity时会被回调。
  2. void onStart():首次创建Activity时在onCreate方法之后执行,但会有另外一种情况,后面会进行分析,总之,就是启动Activity时被回调。
  3. void onRestart():该活动在Activity没有被销毁时会一直存在Activity栈中,重新启动Activity时会被回调。
  4. void onResume():用户在进行Activity切换时,恢复相应的Activity时回调。在void onStart()方法后一定会回调的方法。
  5. void onPause():Activity被暂停时回调,活动会被压倒栈中。
  6. void onStop():Activity被停止时回调。
  7. void onDestroy():Activity被销毁时回调,完全从系统内存中移除。

总结归纳起来,Activity会有四种状态:

  •  运行状态:当前Activity位于前台,用户可见,可以获得焦点。
  • 暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。
  • 停止状态:该Activity不可见,失去焦点。
  • 销毁状态:该Activity结束,或Activity所在的进程被结束。

我通过程序测试得出Activity的7个方法会在何时进行回调。

  • 当前程序入口为该Activity,当程序启动时将会自动启动并执行该Activity,会回调onCreate()、onStart()、onResume()三个方法回调,如图

     技术图片

  • 当切换到程序的另外一个Activity时,MainActivity不能再获取焦点,但依然可见,此时该Activity进入“暂停”状态,会回调onPause()方法,如图

技术图片

 

 

  •  当返回从另外一个Activity返回到MainActivity时,该Activity会再次进入“运行”状态,会回调onStop()、onRestart()、onStart()、onResume()方法,如图

技术图片

  • 当直接按下home键返回系统桌面时,当前该Activity失去焦点,但并未销毁,只是进入“停止”状态,会回调onPause()、onStop()方法,如图

技术图片

  • 当再次从系统桌面进入程序时,会回调onRestart()、onStart()方法,如图

技术图片

  • 当直接退出程序时,会回调onPause()、onStop()、onDestroy()方法,如图

技术图片

 

 由以上实验得onCreate和onDestroy该方法在周期中只会被调用一次。

 

以上是关于Activity生命周期理解的主要内容,如果未能解决你的问题,请参考以下文章

导航上的片段生命周期重叠

教你理解Fragment

使用 Fragment 和 Activity 执行生命周期流程的问题

如何理解Activity 的生命周期

理解片段事务期间片段的生命周期方法调用

自动挂钩到 Activity 生命周期方法的异步任务库