android activity生命周期


demo:http://developer.android.com/training/basics/activity-lifecycle/starting.html#Destroy


Note: The system calls onDestroy() after it has already called onPause() and onStop() in all situations except one: when you call finish() from within the onCreate() method.  In this case, the system immediately calls onDestroy() without calling any of the other lifecycle methods


Pause:当一个activity变的部分可见时(如某半透明activity遮盖),就进入pause状态,调用onPause()方法。一个activity进入pause状态有时意味着它将进入stop状态,故应该在onPause方法中保存用户希望保存的数据,但在onPause()方法中不应该进行如数据库操作等强耗CPU的操作(不然会影响用户感知下一个activity,即交互性),而应该等到调用onStop时才进行这类操作。

1. 停止动画或其他消耗CPU的操作

2. 提交未保存的用户期望的修改

3. 释放系统资源,如camera,sensor等用户暂时不需要的


Resume: 即当前活动activity。当一个activity第一次创建并展示,以及当activity从pause状态恢复时,调用onResume方法进入resume状态,在onResume中应当做:

1. 恢复在onPause中停止的操作,如动画等消耗CPU的操作

2. 初始化onPause中释放的资源,如camera、sensor等


Stop:由于系统可能在需要内存时将某些stop状态的activity从内存中清除,故应该在onStop中完成larger more CPU intensive shut-down operations, 比如写数据库操作。


destroy: 系统调用onDestroy销毁activity,这一步必须保证activity所使用的线程及其他系统资源都被停止或释放掉。


当用户按下返回键时activity会被销毁。


Recreate:当用户旋转屏幕时,activity将经历destroyed 和recreated 状态,系统会自动保存视图层的数据信息,但如果用户需要保存其他的activity 状态信息就需要通过重写onSaveInstanceState()方法将信息保存在Bundle,然后在activity  recreate时系统会自动将Bundle传递给onCreate()和onRestoreInstanceState()方法。


Caustion: 在onCreate()中需要判断Bundle是否为null,不为null再从中取出之前destroy时保存的状态信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值