Activity生命周期解说
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Activity生命周期解说
二、事件方法链
2.1进入Activity
onCreate -> onStart -> onResume
2.2BACK键
onPause->onStop->onDestroy
2.3HOME键
Home键退出:onPause->onStop
Home键回来:onRestart -> onStart->onResume
2.4休眠/恢复
休眠:onPause
恢复:onResume
2.5旋转屏幕
未设置android:configChanges:
onPause -> onStop -> onDestory -> onCreate -> onStart -> onResume
设置了android:configChanges="orientation|keyboardHidden":
不会触发生命周期方法,参见文章这里。
2.6来电
来电,显示来电界面:
onPause -> onStop
关闭电话界面,重新回到当前Activity:
onRestart -> onStart->onResume
2.7其他Activity
进入下一个Activity:
onPause -> onStop
从其他Activity返回至当前Acitivity:
onRestart -> onStart->onResume
三、与Activity生命周期结合的应用场景
3.1与广播(Broadcast)结合
在onResume注册广播(registerLinstener),在onPause注销广播(unregisterLinstener)。例如:
做"摇一摇"功能(传感器)、监听网络变化,就可以在onResume中注册监听,在onPause里注销掉,已节省资源提高效率。
3.2与服务(Service)结合
在onStart绑定服务(bindService),在onStop中取消绑定(unbindService)。例如:
需要通过Service定时更新UI上的数据,而Activity的可见周期在onStart与onStop 之间,那么就可以再onStart时启动服务,在onStop时停止服务。为了节约系统资源,除了提高用户体验以外,开发人员应尽可能的优化程序。
3.3与Cursor结合
使用managedQuery让Activity帮你管理Cursor的生命周期,不用自己去close。但也有一些问题,补充两篇文章:这里1、这里2。
3.4释放资源
可以在onDestory中释放一些资源。比如可以在onDestory时调用MediaPlayer的release。
四、注意
4.1所有Activity生命周期方法的实现都必须先调用其父类版本。
4.2由于Activity经常会暂停和恢复之间切换,所以onResume和onPause这两个方法应当是轻量级的。
4.3在系统再某种紧急情况下需要回收内存,onStop、onDestory可能不会被调用,因此需要在onPause中把需要长期保存的数据保存起来。