Android笔记(一) | Activity的生命周期

  • 时间:
  • 浏览:6

下面是7个生命周期:

每个人所有观点:上述实例2的愿因分析是在回调onStop法律法律依据前,Activity A在后台是可见的,只不过没人前台无法与用户发生交互,机会回调了onStop,后台的Activity A本来可见了,没人 Activity B的透明背景前一天是默认的白色背景,视觉上会显得十分尴尬,每个人所有我其实没人 设计也是为了优化用户体验吧。

image.png

  机会另另一个线程中没人 四大组件在执行,没人 什儿 线程将更快被杀死,怎么让,什儿 后台工作最好是放入去Service中从而提高优先级,不至于轻易被系统杀死。

  前面强调了在默认状态下,系统配置发生改变时,Activity会被重新创建,也本来说,这是不要 改变的。我们都都都知道,在AndroidManifest文件中会对每个Activity进行注册,而在Activity标签下有android:configChanges什儿 属性。什儿 属性下涵盖统统有值,与什儿 系统配置相对应,我们都都都都希望在某个系统配置改变时不重建什儿 Activity,就不要 在configChanges属性中上加对应的值。

常用的有:

 1.orientation:屏幕方向发生改变,比如手机屏幕旋转;

 2.locale:设备的本地位置发生了改变,一般指切换了系统语言;

 3.keyboardHidden:键盘的可访问性发生了改变,例如用户调出了键盘。

补充:

 1. 我们都都都都指定了configChanges属性时,机会指定的系统配置发生改变,不要 重建Activity,怎么让会调用Activity的 onConfigurationChanged 法律法律依据,我们都都都不要 根据每个人所有的需求重写什儿 函数。

下一篇:Android笔记 | Activity的启动模式

下文将分两次责来讨论Activity的生命周期,参照任玉刚老师的《Android开发艺术探索》一书,结合所学进行总结扩充。

  与正常生命周期相比,多了数据的保存和恢复这另另一个过程。当Activity在异常状态下终止时,系统会调用onSaveInstanceState法律法律依据将Activity的状态保存为另另一个Bundle对象,什儿 对象会在Activity重新创建后传递给onRestoreInstanceState法律法律依据和onCreate法律法律依据,什儿 法律法律依据的调用时机是在onStop前一天,与onPause没人 既定的时序关系。当Activity被重新创建后,系统会调用onRestoreInstanceState,将onSaveInstanceState法律法律依据保存的Bundle对象作为参数,取出其中的数据进行恢复,什儿 法律法律依据的调用时机是在onStart前一天。根据什儿 点,我们都都都不要 判断onRestoreInstanceState法律法律依据否有被调用机会onCreate法律法律依据中的Bundle参数否有为null来选则Activity否有被重建。

状态1: 资源相关的系统配置发生改变愿因分析Activity被杀死并重新创建

  最常见的状态本来手机屏幕发生旋转时,机会系统配置发生改变,在默认状态下(即没人 特殊设置),Activity会被销毁并重新创建。其生命周期如下图:

状态2:资源内存缺陷愿因分析低优先级的Activity被杀死

什儿 状态不方便模拟,但生命周期和状态1是相同的。Activity的优先级由高到低如下:

 1.前台Activity;

 2.可见但非后台Activity——例如被Dialog遮挡的的Activity;

 3.后台Activity——执行了onStop的Activity。

 实践出真知,有有哪些过程都不要 每个人所有写个简单的Demo验证一下,印象更深刻什儿 。

  每个View都是每个人所有的onSaveInstanceState法律法律依据和onRestoreInstanceState法律法律依据,以根据不同View的需求来恢复不同的数据,例如:TextView恢复了自身文本的选中状态和文本内容。

根据手机使用过程中的常见状态,我们都都都从五种状态来讨论Activity在异常模式下的生命周期:

  前面提到,onSaveInstanceState法律法律依据保存的数据会传递给onRestoreInstanceState法律法律依据和onCreate法律法律依据,也本来说,进行数据恢复时,有五种法律法律依据,五种是在onCreate法律法律依据中进行,五种是在onRestoreInstanceState法律法律依据中进行。怎么让在onCreate法律法律依据中进行数据恢复得话,时要考虑Activity是正常启动的还是被重建的,机会是正常启动,没人 onCreate(Bundle onSaveInstanceState)中的onSaveInstanceState参数是null。当然,官方文档是建议采用onRestoreInstanceState法律法律依据来恢复数据的。

 上端描述的是Activity正常状态下的生命周期,这里再结合我们都都都平常使用手机过程中的什儿 操作,具体说明一下其生命周期过程:

从Activity A 打开新的Activity B,B活动回调状态:onPause -> ( Activity B 启动)-> onStop 。这里还有五种特殊状态,当新启动的Activity采用透明主题时,当前Actvity不要 回调onStop法律法律依据。(见补充说明1)

补充说明:

下图表示正常状态下Activity的生命周期过程。