[关闭]
@Tyhj 2018-09-28T10:03:18.000000Z 字数 1198 阅读 951

Activity生命周期分析

Android


Activity生命周期是最基础的知识了,不过最近看《Android开发艺术探索》这本书还是有所收获,记录一下一些比较重要的地方

正常生命周期

(1) onCreate:表示Activity正在被创建。一般做一些初始化操作,加载界面布局、初始化Activity所需的数据等

(2) onRestart:表示Activity正在重新启动。当Activity从不可见变为可见的时候会被调用

(3) onStart:表示Activity正在被启动,即将开始,这时候Activity已经可见,还没有出现在前台,无法和用户交互

(4) onResume:表示Activity已经可见了,并且出现在了前台开始活动

(5) onPause:表示Activity正在停止,正常情况下,onStop马上会被调用。特殊情况下,比如这个时候马上回到当前Activity,那么onResume会被调用。此时可以做一些数据保存、停止动画等操作,但是不能做耗时操作,因为onPause必须先执行完成,才能执行下一个Activity的onResume

(6) onStop:表示Activity即将停止,可以做一些轻量级的回收工作,同样不能太耗时,但是我们应当尽量在onStop中做操作,从而使得新的Activity尽快显示出来并切换到前台

(7) onDestroy:表示Activity即将被销毁,可以做一些回收工作和最终的资源释放

可交互就是用户可以操作、点击等,可见就是还能看见这个界面,在这个界面上可能还有其他界面存在

异常情况的生命周期

资源相关的系统配置发生改变导致Activity被杀死并重新创建

比如说我们配置了横屏和竖屏下不同的图片,手机旋转了屏幕,由于系统配置发生了改变,默认情况下Activity会被销毁并且重新创建。

销毁时候,在onStop之前会调用onSaveInstanceState方法保存当前Activity的状态,保存到Bundle对象,重建的时候,在onStart之后会调用onRestoreInstanceState方法,并且把Bundle同时传给onRestoreInstanceState方法和onCreate方法,系统默认为我们保存和恢复一些视图数据,我们也可以自己来保存和恢复一些数据,建议是在onRestoreInstanceState方法中恢复

资源内存不足导致低优先级的Activity被杀死

这种情况的数据保存和恢复和上面是一样的。Activity优先级分为前台、可见、后台三种等级,如果一个进程没有四大组件在执行的话也很容易被杀死,所以一些后台工作可以放入Service中执行,提高优先级

防止系统配置发生变化导致Activity重新创建的方法是配置configChanges属性,比如配置屏幕旋转:

  1. android:configChanges="orientation"
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注