Activity的生命周期——笔记一

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43847987/article/details/96839580

Activity的生命周期分为两部分

1.典型情况下的生命周期——>有用户参与的。
2.异常情况下的生命周期——>Activity被系统回收或者由于当前设备的Configuration发生改变从而导致Activity被销毁重建。

一、典型情况下的生命周期

(1)onCreate:表示Activity被创建。做初始化工作,setContentView初始化Activtiy所需数据等。
(2)onRestart:表示Activity的重新启动。
(3)onStart:表示Activity正在被启动,这时Activity已经可见了,但是还没有出现在前台。无法与用户进行交互。
(4)onResume:表示Activity已将可见了,并且已经出现在前台了,可交互。
(5)onPause:表示Activtiy正在停止。
(6)onStop:表示Activity即将要停止。可以做一些重量级的回收工作,但不能太耗时。
(7)onDestroy:表示Activity即将要被销毁。做一些回收工作和资源的释放。
在这里插入图片描述Activity的生命周期切换过程

问题
1.onStart和onResume、onPause和onStop从描述上看差不多,对我们来说有什么实质的不同呢?
onStart和onStop是从Activity是否可见这个角度来回调的,而onResume和onPause是从Activity是否位于前台来回调的。

2.假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪一个先执行呢?
答案是A的onPause先执行,在新的Activity启动之前,栈顶的Activity需要先onPause,新的Activity才可以启动。

二、异常情况下的生命周期
Activity生命周期的异常情况,当资源相关的系统配置发生改变以及系统内存不足时,Activity就有可能被杀死。

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

在默认情况下,当Activity的系统配置发生改变后,Activity就会被销毁并重新创建。生命周期如下:
在这里插入图片描述
当系统的配置发生改变时,Activity会被销毁,其onPause、onStop、onDestroy
都会被调用,因为是在异常情况下终止的所以系统会调用onSaveInstanceState来保存当前Activity的状态(在onStop之前)。当Activity被重新创建之后,系统会调用onRestoreInstanceState并且onSaveInstanceState方法会将所保存的Bundle对象作为参数传递给onRestoreInstanceState(在onStart之前被调用)和onCreate方法。系统会默认为我们保存当前Activity的视图结构。

系统只在Activity异常终止的时候才会调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据,其他情况不会触发这个过程。

情况2:资源内存不足导致低优先级的Activity被杀死
优先级排序(由高到低):前台Activity,可见但非前台Activity,后台Activity。
当系统内存不足时,系统会按照上述优先级去杀死目标Activity所在的进程,并且在后续通过onSaveInstanceState和onRestoreInstanceState来存储和恢复数据。如果一个进程中没有四大组件在运行,那么这个进程将很快被系统杀死。所以一些后台工作是不适合脱离四大组件的,我们最好将后台工作放入到Service中从而来保证进程有一定的优先级,以免被系统轻松的杀死。

如何在系统配置发生变化的时候,Activity不狐疑被重建呢?
我们可以给Activity指定configChanges属性。比如不想Activity在屏幕旋转的时候重新创建就可以给configChanges属性添加orientation这个值,如下:
android:configChanges=“orientation”;
如果存在多个属性可以用"|"连接起来。
Android:configChanges用于捕获手机状态的改变。指定了这个值之后就不会重建了,也不会存储和恢复数据,系统会调用Activity的onConfigurationChanged方法,这个时候就可以做一些特殊处理了。

猜你喜欢

转载自blog.csdn.net/weixin_43847987/article/details/96839580