想搞懂Jetpack架构可以不搞懂生命周期知识吗?

状态管理:

当Activity进入Stopped状态,系统使用onSaveInstanceState保存app状态,以防系统将app进程杀死,重启后恢复状态。

4. 单Activity旋转屏幕

====================================================================================

触发步骤:

  • Configuration发生改变, 比如旋转屏幕

  • 用户在多窗口模式下调整窗口大小

当用户旋转屏幕,系统会保留旋转之前的状态,能很好的恢复到之前的状态。调用顺序如图:

状态管理:

  • Activity被完全销毁掉,但是状态会被保存,而且会在新的Activity中恢复该状态

  • onCreate和onRestoreInstanceState方法中的bundle是一样的

5. 单Activity弹出Dialog

========================================================================================

触发步骤:

  • 在API 24+上开启多窗口模式失去焦点时

  • 其它应用部分遮盖当前APP,比如弹出权限授权dialog

  • 弹出intent选择器时,比如弹出系统的分享dialog

该场景不适用于以下情况:

  • 相同APP中弹dialog,比如弹出AlertDialog或者DialogFragment不会导致Activity onPause发生调用

  • 系统通知。当用户下拉系统通知栏时,不会导致下面的Activity onPause发生调用。

6. 多个Activity跳转

===================================================================================

触发步骤:

  • activity1 跳转到activity2

  • 按返回按钮

注意:activity1 跳转到activity2 正确的调用顺序是

->activity1.onPause

->activity2.onCreate

->activity2.onStart

->activity2.onResume

->activity1.onStop

->activity1.onSaveInstanceState

在该场景下,当新的activity启动时,activity1处于STOPPED状态下(但是没有被销毁),这与用户按Home键有点类似。当用户按返回按钮时,activity2被销毁掉。

状态管理:

  • onSaveInstanceState会被调用,但是onRestoreInstanceState不会。当activity2展示在前台时,如果发生了旋转屏幕,当activity1再次获得焦点时,它将会被销毁并且重建,这就是为什么activity1在失去焦点时为什么需要保存状态。

  • 如果系统杀死了app进程,该场景后面会介绍到

7. 多个Activity跳转,并且旋转屏幕

==========================================================================================

  • activity1 跳转到activity2

  • 在activity2上旋转屏幕

  • 按返回按钮

注意: 当返回activity1时,必须保证屏幕是保持旋转后的状态,否则并不会调用onDestroy方法。而且是在activity1回到前台时才会主动掉onDestroy

状态管理:

保存状态对所有的activity都非常重要,不仅仅是对前台activity。所有在后台栈中的activity在configuration发生改变时重建UI时都需要将保存的状态恢复回来。

8. 多个Activity跳转,被系统kill掉app

===============================================================================================

  • activity1 跳转到activity2

  • 在activity2上按Home键

  • 系统资源不足kill app

9. 总结

=========================================================================

本文主要是从Google大佬Jose Alcérreca的文章翻译过来。他假设的这7个关于activity的生命周期场景,对了解Lifecycle有非常大的帮助。甚至对于面试都是有非常大的帮助。

推荐学习资料


  • 脑图
    360°全方位性能调优


    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
    -1715083032470)]
    [外链图片转存中…(img-OhJrOXgV-1715083032472)]
    [外链图片转存中…(img-24zcrvop-1715083032473)]
    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值