美文网首页
初识:Activity的生命周期

初识:Activity的生命周期

作者: Antonylr | 来源:发表于2019-12-24 14:39 被阅读0次

Activity是开发人员接触最多的,也是用户直接交互的组件。废话不多说直接上它的生命周期图[如下]

activity生命周期图示 周期方法

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

列举两种实例如下:

    当用户再次回到原Activity时: onRestart    onStart   onResume

    当用户按back键回退时:onPause   onStop   onDestory

拓展:

(1)onStart和onResume,   onPause和onStop 在描述上来看都差不多,对我们来说有什么实质的不同呢?

        答:onStart和onStop是从Actvity是否可见这个角度来回调的。

               onResume和onPause是从Activity是否位于前台这个角度来回调的。

               除了这种区别在实际使用中没有其他明显区分。

               从实际使用过程来说onStart和onResume,    onPause和onStop开起来的确差不多甚至我们可以只保留其中一对。

(2)假设当前为Activity_A  如果这是用户打开一个新的 Activity_B,  那么B的onResume和A的onPause哪个先调用(执行)呢?

        答:旧的Actvity[ _A ]先onPause,  然后新的Actvity[ _B ]在启动(我们可以查看源码或敲代码实验一下)

异常情况下的生命周期分析

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

咋一看很抽象,我们举一个简单的例子,  "比如说,当前Activity处于竖屏状态,突然旋转屏幕。由于系统配置发生改变,在默认情况下,Activity就会被异常销毁并重新创建(其实我们可以阻止系统去重新创建这个Activity,这里暂不考虑)“

Activity先被异常销毁: onPause    onSaveInstanceState    onStop  onDestroy

Activity在从新生成:onCteate  onStart    onRestoreInstanceState    onResume

注意:

(1)Activity正常销毁情况下 onSaveInstanceState  它是不会被调用的

(2)Activity可以指定configChanges属性来捕获手机状态改变,来控制是否让系统重新创建新页面  android:configChanges="orientation | screenSize" 参数如下

参数含义

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

/*Activity按照优先级从高到低,可以分为三种:

        (1)前台Activity---正在和用户交互的Activity, 优先级最高

        (2)可见但非前台Activity---比如在当前Activity上浮着一个Dialog对话框,这个Activity可见但是位于后台无法和用户直接交互

        (3)后台Activity---已经被暂停的Activity,比如执行了onStop, 优先级最低*/

当系统内存不足时,系统就会按照Activity的优先级去杀死目标Activity所在的进程,并在后续通过 onSaveInstanceState  和 onRestoreInstanceState 来存储和恢复数据

相关文章

网友评论

      本文标题:初识:Activity的生命周期

      本文链接:https://www.haomeiwen.com/subject/tjffoctx.html