生命周期--艺术探索

正常情况的生命周期分析

七大生命周期

在这里插入图片描述

正常情况下 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 的重建过程:
![在这里插入图片描述](https://img-blog.csdnimg.cn/a3be0d234aca4b3299b50d17f88757c1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2_kuI3nkIbmmbo=,size_20,color_FFFFFF,t_70,g_se,x_16

在 onSaveInstanceState 和 onRestoreInstanceState 方法中,系统自动为我们做了一定的恢复工作。当 Activity 在异常情况下重建时,系统会默认为我们保存当前 Activity 的视图结构,并且在Activity重启后为我们恢复这些数据,比如文本框中用户输入的数据、ListView 滚动的位置等,这些 View 相关的状态系统都能够默认为我们恢复。

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值