Activity生命周期

转载地址:http://dev.chinamobile.com/cmdn/wiki/index.php?doc-view-2367.html

在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个阶段如下:
1.  开始Activity:在这个阶段依次执行3个生命周期方法:onCreate、onStart和onResume。
2.  Activity失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,这时当前的Activity会失去焦点。在这一阶段,会依次执行onPause和onStop方法。
3.  Activity重新获得焦点:如果Activity重新获得焦点,会依次执行 3个生命周期方法:onRestart、onStart和onResume。
4.  关闭Activity:当Activity被关闭时系统会依次执行3个生命周期方法:onPause、onStop和onDestroy。

 

    如果在这4个阶段执行生命周期方法的过程中不发生状态的改变,那么系统会按着上面的描述依次执行这4个阶段中的生命周期方法,但如果在执行的过程中改变了状态,系统会按着更复杂的方式调用生命周期方法。 在执行的过程中可以改变系统的执行轨迹的生命周期方法是onPause和onStop。如果在执行onPause方法的过程中Activity重新获得了焦点,然后又失去了焦点。系统将不会再执行onStop方法,而是按着如下的顺序执行相应的生命周期方法:
onPause -> onResume-> onPause
    如果在执行onStop方法的过程中Activity重新获得了焦点,然后又失去了焦点。系统将不会执行onDestroy方法,而是按着如下的顺序执行相应的生命周期方法:
onStop -> onRestart -> onStart -> onResume -> onPause -> onStop
图1详细描述了这一过程。

从图1所示的Activity生命周期不难看出,在这个图中包含了两层循环,第一层循环是onPause-> onResume -> onPause,第二层循环是onStop -> onRestart -> onStart -> onResume -> onPause-> onStop。我们可以将这两层循环看成是整合Activity生命周期中的子生命周期。第一层循环称为焦点生命周期,第二层循环称为可视生命周期。也就是说,第一层循环在Activity焦点的获得与失去的过程中循环,在这一过程中,Activity始终是可见的。而第二层循环是在Activity可见与不可见的过程中循环,在这个过程中伴随着Activity的焦点的获得与失去。也就是说,Activity首先会被显示,然后会获得焦点,接着失去焦点,最后由于弹出其他的Activity,使当前的Activity变成不可见。因此,Activity有如下3种生命周期:
1.  整体生命周期:onCreate -> ... ... -> onDestroy。
2.  可视生命周期:onStop -> ... ... -> onPause。
3.  焦点生命周期:onPause -> onResume。
    注意:在图1所示的Activity生命周期里可以看出,系统在终止应用程序进程时会调用onPause、onStop和onDesktroy方法。而onPause方法排在了最前面,也就是说,Activity在失去焦点时就可能被终止进程,而onStop和onDestroy方法可能没有机会执行。

因此,应该在onPause方法中保存当前Activity状态,这样才能保证在任何时候终止进程时都可以执行保存Activity状态的代码。

转载于:https://www.cnblogs.com/lysky/archive/2010/06/11/1756462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值