《Android开发艺术探索》读书笔记之Activity的生命周期

时间:2024-01-20 18:05:45

两种不同情况下的Activity生命周期

(1)典型情况下的生命周期

  指在有用户参与的情况下,Activity所经过的生命周期的改变。

(2)异常情况下的生命周期

  指Activity被系统回收或者由于当前设备的Configuration发生改变重而导致Activity被销毁传重建。

先来看看典型情况下的生命周期分析

看看官方文档的Activity生命周期图

《Android开发艺术探索》读书笔记之Activity的生命周期

注意以下几点:

(1)onstart()和onResume()从实际使用过程来说差不多,但是onstart()的时候Activity虽然可见啦但是还在后台,onResume()的时候Activity已经显示在前台了。

(2)onstop()和onPause()的区别是onPause()的时候Activity还显示在前台,onstop()的时候Activity在后台不可见啦。

(3)新启动一个Activity时,旧Activity的onPause()会先执行,然后才会启动新的Activity,所以不要在onPause()方法中做重量级的操作,尽量在onstop()中处理

异常情况下的生命周期说明

情况1:资源相关的系统配置发生改变导致Activity被杀死

    默认情况下,如果Activity不做特殊处理,那么当系统配置发生改变后,Activity就会被销毁并重新创建,生命周期如下图所示:

    《Android开发艺术探索》读书笔记之Activity的生命周期

注意:当系统配置发生改变之后,Activity会被销毁,其onPause,onStop,onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前Activity的状态,比如说Activity的视图结构。而在onResoreInstanceState中做一些恢复工作,并且在Activity重启之后的为我们恢复这些数据,比如说文本框中用户输入的数据,listView滚动的位置等,OnsaveInstanceState方法的调用时机实在onStop之前,但是它和onPause没有既定的时序关系,它既可能在onPause之前,也可能在之后,onResoreInstanceState方法的调用时机是在onStart之前。

情况2:资源内存不足导致低优先级的Activity被杀死

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}