状态管理:
当Activity进入Stopped状态,系统使用onSaveInstanceState保存app状态,以防系统将app进程杀死,重启后恢复状态。
====================================================================================
触发步骤:
-
Configuration发生改变, 比如旋转屏幕
-
用户在多窗口模式下调整窗口大小
当用户旋转屏幕,系统会保留旋转之前的状态,能很好的恢复到之前的状态。调用顺序如图:
状态管理:
-
Activity被完全销毁掉,但是状态会被保存,而且会在新的Activity中恢复该状态
-
onCreate和onRestoreInstanceState方法中的bundle是一样的
========================================================================================
触发步骤:
-
在API 24+上开启多窗口模式失去焦点时
-
其它应用部分遮盖当前APP,比如弹出权限授权dialog
-
弹出intent选择器时,比如弹出系统的分享dialog
该场景不适用于以下情况:
-
相同APP中弹dialog,比如弹出AlertDialog或者DialogFragment不会导致Activity onPause发生调用
-
系统通知。当用户下拉系统通知栏时,不会导致下面的Activity onPause发生调用。
===================================================================================
触发步骤:
-
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进程,该场景后面会介绍到
==========================================================================================
-
activity1 跳转到activity2
-
在activity2上旋转屏幕
-
按返回按钮
注意: 当返回activity1时,必须保证屏幕是保持旋转后的状态,否则并不会调用onDestroy方法。而且是在activity1回到前台时才会主动掉onDestroy
状态管理:
保存状态对所有的activity都非常重要,不仅仅是对前台activity。所有在后台栈中的activity在configuration发生改变时重建UI时都需要将保存的状态恢复回来。
===============================================================================================
-
activity1 跳转到activity2
-
在activity2上按Home键
-
系统资源不足kill app
=========================================================================
本文主要是从Google大佬Jose Alcérreca的文章翻译过来。他假设的这7个关于activity的生命周期场景,对了解Lifecycle有非常大的帮助。甚至对于面试都是有非常大的帮助。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
最后
针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
技术大牛一起讨论交流解决问题。**
[外链图片转存中…(img-KraksWzr-1713614878660)]
[外链图片转存中…(img-z8Cvbqr1-1713614878661)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!