Activity生命周期 onCreate onResume onStop onPause
2013-12-14 17:33
615 查看
Android应用开发提高系列(6)——Activity生命周期
onCreate 和 onResume 在程序启动时候都会启动,所有有些需要在onCreate onResume中都要实现的功能,之需要放在onResume中就可以了。这样还可以避免部分错误,比如在两个事件中都弹出了提示框,这么就会提示两次。前言 四大应用程序组件中Activity是最常用的,也是必须掌握的一个组件。这里分几章梳理归纳一些实用的知识点与大家分享。
正文 一、配图及说明
Activity主要的三种状态: Running(运行):在屏幕前台(位于当前任务堆栈的顶部) Paused(暂停):失去焦点但仍然对用户可见(覆盖Activity可能是透明或未完全遮挡) Stopped(停止):完全被另一个Activity覆盖
二、事件方法链 2.1 进入Activity onCreate -> onStart -> onResume 2.2 BACK键 onPause -> onStop -> onDestroy 2.3 HOME键 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中把需要长期保存的数据保存起来。
相关文章推荐
- Activity生命周期 onCreate onResume onStop onPause (转)
- Activity生命周期:onCreate onStart onResume onPause onStop onDestory (1) 启动Activity: onCreate onStart onR
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?(转)
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?(转)
- [Android] Activity 生命周期 OnStart&OnResume OnPause&OnStop 具体区别
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- [Android] Activity 生命周期 OnStart&OnResume OnPause&OnStop 具体区别
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
- activity生命周期的onPause和onStop
- Activity 重载方法 onStart和onResume、onPause和onStop的区别