其他分享
首页 > 其他分享> > 生命周期--艺术探索

生命周期--艺术探索

作者:互联网

正常情况的生命周期分析

七大生命周期

在这里插入图片描述

正常情况下 Activity 的常用生命周期就是上面7个,下面是各种生命周期的切换过程:
在这里插入图片描述

分析上图:

  1. 针对一个特定的 Activity ,第一次启动,回调如下:onCreate->onStart->onResume。
  2. 当用户打开新的Activity或者切换到桌面的时候,回调如下:onPause->onStop。这里有一种特殊情况,如果新Activity采用了透明主题,那么当前Activity不会回调 onStop 。
  3. 当用户再次回到原Activity时,回调如下:onRestart->onStart->onResume。
  4. 当用户按back键回退时,回调如下:onPause->onStop->onDestroy。

问题分析

在这里插入图片描述
通过分析源码,在新Activity启动之前,栈顶的Activity需要先 onPause 后,新Activity才能启动执行onCreate->onStart->onResume,然后Activity A才能执行onStop。

因此为了能让新Activity能快速显示出来,我们不能在 onPause 中执行耗时操作,应尽量在 onStop 中执行。

异常情况下的生命周期分析

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

如果我们的 Activity 不做特殊处理,当系统配置发生改变后,Activity 就会被销毁并重新创建,其生命周期如图:
在这里插入图片描述
分析异常情况下 Activity 的重建过程:
在这里插入图片描述
在 onSaveInstanceState 和 onRestoreInstanceState 方法中,系统自动为我们做了一定的恢复工作。当 Activity 在异常情况下重建时,系统会默认为我们保存当前 Activity 的视图结构,并且在Activity重启后为我们恢复这些数据,比如文本框中用户输入的数据、ListView 滚动的位置等,这些 View 相关的状态系统都能够默认为我们恢复。

关于保存和恢复 View层次结构,系统的工作流程是这样的:
在这里插入图片描述

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

这种情况的数据存储和恢复过程和上述完全一致。

这里说明以下 Activity 的优先级情况。Activity 按照优先级从高到低,可以分为如下三种:
在这里插入图片描述

配置文件发生改变但要防止 Activity 重新创建

可以给 Activity 指定 configChanges 属性。比如不想让 Activity 在屏幕旋转的时候重新创建,就可以给 configChanges 属性添加 orientation 这个值,如果想指定多个值,可以用" | "连接起来,如下:
在这里插入图片描述
介绍系统配置中每个项目的含义:
在这里插入图片描述
添加 configChanges 属性后,Activity 在异常情况下不会重新
创建,并且也没有调用 onSaveInstanceState 和 onRestoreInstanceState 来存储和恢复数据,取而代之的时系统调用了 Activity 的 onConfigurationChanged 方法,我们可以在这个方法中做一些自己的特殊处理。

标签:生命周期,探索,--,如下,onPause,onStop,Activity,configChanges
来源: https://blog.csdn.net/weixin_56504344/article/details/122754176