Android 生命周期初探

Android初学者大概都会学习到组件生命周期的知识,onCreate()->onstart()->onResume()->onPause()->onStop()->onDestroy() 的流程都已熟悉。最近在项目中碰到一个难解决的bug,最后发现原来跟组件生命周期有一定的关系,在此做一点分享。

单个Activity的生命周期,毫无疑问是按照上面的顺序来的,但是从一个Activity跳转到另一个Activity的过程中呢?是不是第一个Activity先走完onPause()->onStop->onDestroy()->  ,然后第二个Activity再走onCreate()->onStart()->onResume() ?

这应该属于正常思维,在昨天以前,我也一直以为生命周期是这样走的。可是小小实现一下,发现和预想中的有些差别。

代码很简单,在各个周期函数中打上log即可,就不贴出了。第一个Activity称为first,第二个Activity称为second。在first中添加一个按钮,点击后通过Intent跳转到second。打出log发现,从first跳转到second的流程如下:

-->first.onPause()
-->second.onCreate()
-->second.onStart()
-->second.onResume()
-->first.onStop()

也就是说第一个界面在执行完onPause()后,第二个界面就开始走onCreate()直到onResume()了,然后第一个界面继续走接下来的onStop()。如果是跳转后finish()掉第一个界面,还会往下走onDestroy();

在second点击back按钮,走的流程如下:
-->second.onPause()
-->first.onRestart()
-->first.onStart()
-->first.onResume()
-->second.onStop()
-->second.onDestroy()

同第一次跳转基本类似。

由以上的实验可知,当Activity进行跳转时,两个Activity的生命流程并不是按照直线顺序进行的,而是中间有一部分交错。头一个Activity走完onPause()后,第二个Activity就会走完它的生命周期,接着第一个Activity继续走onStop(),onDestroy()。

因此,在项目中应该注意在数据处理时考虑到生命周期的这一特性,避免造成错误。

转载于:https://www.cnblogs.com/xutao1988/archive/2012/03/12/2391243.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值