1. 理解几个重要的生命周期回调函数
android activity的生命周期是必须深入理解和掌握的,才能更好的开发出性能优良的app。
回调函数 | 适合处理的任务 |
---|---|
onCreate() | 初始化UI,及其他组件 |
onStart() | 很快调用完进入Resume状态 |
onResume() | Activity完全可见,可交互,有焦点 |
onPause() | Activity被遮挡但可视,不可交互 |
onStop() | 完全不可见,失去焦点,如进入别的Activity或APP |
onDestroy() | 资源回收,一般不用重写,大部分清理工作应该在onPause() & onStop()中完成 |
onRestart() | 从Pause –> restart –> start –> resume |
finish() | 自己结束 |
将安卓各个生命周期理解为爬金字塔,可以很形象的记忆并理解。

2. Activity 的暂停与继续
其中三个回调函数可以长时间停留,与用户产生交互
- onResume()
- onStop()
- onPause()
当一个Activity被部分遮挡,如弹出对话框,此时则会进入Pause状态。
如果被完全遮挡,则进入stop状态。
onPause()状态通常需要处理如下任务:
- 停止一些消耗cpu的任务,如播放动画等
- 保存一些需要保存的数据
- 释放系统资源,如broadcast receivers ,传感器的引用(如摄像头,GPS,蓝牙等)一些耗电多的资源。
注意: 在onPause()中不要进行耗时任务,如数据库操作,这样会影响UI组件的显示效果。在onStop中处理耗时任务较为合适
3. Activity的 停止与重启
几个典型的Stop场景
用户打开最近使用的APP,选择使用其他APP,此时便进入stop状态。
从当前Activity跳转到另外一个Activity,则前一个进入stop状态,如果用户按back键返回,则重新restart。
Start / ReStart Activity
当Activity从后台stop变为前台可见时,系统回调onRestart(),onStart()方法。
注意:由于系统会保留处于Stop截断的Activity实例各种状态,一般的APP没太多必要重写 onRestart
4. 重建与恢复Activity
销毁
当系统因为内存过低等其他因素销毁了Activity(非正常销毁),尽管Activity Instance实例被回收,但是其状态被系统保存下来,以备恢复之需。
注意:旋转屏幕也会销毁与重建Activity,因为可能需要加载不同的适配资源。
恢复
Instance State存在一个key-value键值对集合中,即 Bundle对象。
注意:所有拥有Id的 View都会自动保存用户的输入,如edittext等。所以不必为此担心。
如果要存储Acivity的额外信息数据到bundle中,则需要重写onSaveInstanceState() 回调函数。
当Activity销毁时系统会自动传入一个bundle对象负责存储数据,当你需要用到之前的状态来重建Activity时,系统会传入刚才保存的bunlde对象到onCreate() & onRestoreInstanceState() 方法中。
