Android activity生命周期重走


前言

从切换白天和黑夜模式说起
一个场景是页面有倒计时功能,并实时显示时钟和倒计时剩余分钟数提醒
此时切换白天和黑夜模式导致页面生命周期重走,数据全部重置,问题出现

实际测试发现切换白天/黑夜模式,切换系统语言均会导致生命周期重走。

那么有哪些场景会导致页面生命周期重走?

配置项更改导致重建Activity

在这里插入图片描述

activity重建的细节

  1. Activity 重建过程中,先将原来的Activity 进行销毁(从onPause > onStop > onDestroy > onCreate 的生命周期)。
  2. 虽然是不同的Activity 对象,但重建时使用的ActivityClientRecord 却是相同的,而ActivityClientRecord 最终是被ActivityThread 持有,它是全局的。这也是onSaveInstanceState/onRestoreInstanceState 能够存储与恢复数据的本质原因。

activity重建的原因分析

  1. 系统内存不足
  2. 配置项改变(configuration change )
    例如横竖屏切换,白天黑夜模式切换
  3. 调用activity的onCreate()方法

配置项声明不重建activity

横竖屏切换
   <activity android:name="" android:configChanges="orientation|screenSize"></activity>
白天/黑夜模式
   <activity android:name="" android:configChanges="uiMode"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值