Connor学Android - Activity生命周期

在这里插入图片描述

Learn && Live

虚度年华浮萍于世,勤学善思至死不渝

前言

Hey,欢迎阅读Connor学Android系列,这个系列记录了我的Android原理知识学习、复盘过程,欢迎各位大佬阅读斧正!原创不易,转载请注明出处:http://t.csdn.cn/1CPfU,话不多说我们马上开始!

1.生命周期分析

在这里插入图片描述
onCreate:Activity正在被创建,可进行初始化工作,如setContentView加载界面布局资源、初始化Activity所需数据等

onRestart:Activity正在被重新创建,即由不可见状态 → 可见状态

onStart:Activity正在被启动。可见,但没有出现在前台,不可交互

onResume:Activity可见可交互

onPause:Activity正在停止,可能调用的操作:①按Home键;②打开一个新的Activity等。可以做一些存储数据、停止动画等非耗时的工作,因为onPause执行完新Activity才会执行onResume,耗时的工作会影响新Activity的显示

onStop:Activity即将停止,可进行重量级回收工作,但同样不能太耗时

onDestroy:Activity即将销毁,可进行回收工作和最终的资源释放

此外图中还有两个与Activity生命周期切换相关的回调函数,下面一并介绍

onSaveInstanceState:用于储存当前Activity状态

​ (1)调用时机:意外情况导致的onPause调用,此处意外情况如:Home、长按Home或按下菜单键、熄屏、A启动B时A调用、默认情况下的横竖屏切换,而人为情况下,如Back、finish()不会调用。

​ (2)注意:onPause、onSaveInstanceState回调顺序不定

onRestoreInstanceState:用于恢复Activity状态,常见于系统配置发生变化时,后面会详细介绍

2.生命周期切换实例

1.A → B

A.onSaveInstanceState → A.onPause → B.onCreate → B.onStart → B.onResume → A.onStop

A.onPause → A.onSaveInstanceState → B.onCreate → B.onStart → B.onResume → A.onStop

2.Back

B.onSaveInstanceState → B.onPause → A.onRestart → A.onStart → A.onResume → B.onStop → B.onDestroy

3.横竖屏切换(系统配置发生变化)

(1)重新创建Activity(默认情况)

onPause → onSaveInstanceState → onStop → onDestroy → onCreate → onRestoreInstanceState → onStart → onResume

注意:重建时,系统会默认保存当前Activity的视图结构,在重启时恢复,如文本框内容、ListView滚动位置等(对应组件代码的onSaveInstanceState方法和onRestoreInstanceState方法中的具体实现),我们也可以在Activity的onSaveInstanceState方法中保存想要保存的内容。

关于保存和恢复View层次结构,系统的工作流程如下:(1)Activity被意外终止,调用onSaveInstanceState保存数据;(2)Activity委托Window保存数据;(3)Window委托它上面的顶层容器保存数据,顶层容器是一个ViewGroup,一般来说很可能是DecorView;(4)顶层容器逐一通知它的子元素来保存数据。

(2)不重建

设置Activity的android:configChanges=“orientation|keyboardHidden”,横竖屏切换时不会重新创建Activity,而是回调onConfigurationChanged方法

4.内存不足导致低优先级的Activity被杀死

在这里插入图片描述
当系统内存不足时,系统就会按照上述优先级杀死目标Activity所在进程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ConnorYan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值