第一章 Activity的生命周期和启动模式
来源:互联网 发布:网络麻将换牌软件赌博 编辑:程序博客网 时间:2024/05/22 14:10
Activity翻译成活动,其实翻译成界面更好,更容易理解。
一、Activity的生命周期全面分析
- 典型情况下的生命周期:有用户参与的情况下,Activity所经过的生命周期的变化。
- 异常情况下的生命周期:Activity被系统收回或者由于当前设备的Configuration发生改变从而导致Activity被销毁重建。
二、典型情况下的生命周期:
1、在正常情况下,Activity会经历如下生命周期:onCreate() onRestart() onStart() onResume() onPause() onStop() onDestory().
- onCreate() onDestory()是配对的标志着Activity的创建于销毁,并且只可能有一次调用。
- onStart() onStop() 就Activity是否可见来说,是配对的。
- onResume() onPause() 就Activity是否在前台来说,是配对的。
2、假设当前Activity为A,如果这时候用户打开了一个新的Activity B,那么B的onResume() 和A 的onPause()哪个先执行呢。
答:我们可以从源码进行分析(感兴趣的可以去查看源码),下面我们直观的分析:onResume() onPause() 就Activity是否在前台这个角度进行回调的,前台的屏幕如果被活动A全部占有,在A不退出前台的情况下,B是没有空间显示的,所以只有AonPause()之后B 才能onResume().
Android官方文档对onPause的解释:不能在onPause中做重量级的操作,因为必须onPause执行完成以后新的Activity才能Resume。
onPause和onStop都不能执行耗时的操作,尤其onPause。我们应当尽量在onStop中做操作,从而使得新的Activity尽快显示出来并切换到前台。
三、异常情况下的生命周期分析
1、资源相关的系统配置发生改变导致Activity被杀死并重新创建
当系统配置发生改变后(横屏手机和竖屏手机拿到两张不同的图片,突然旋转屏幕的时候),Activity会被销毁,其onPause onStop onDestory 均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState(在异常情况下终止,才会调用这个方法,正常情况下不会)来保存当前Activity的状态,调用时机在onStop之前。onSaveInstanceState保存的思想是一种典型的委托思想。
当Activity被重新创建后,系统会调用onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState 方法所保存的Bundle对象作为参数传递给onRestoreInstanceState和onCreate方法。onRestoreInstanceState和onCreate的区别就是onRestoreInstanceState一旦被调用,Bundle对象实例一定有值,我们不用额外判断是否为空。onCreate中,如果正常启动,Bundle对象实例为null,所以需要额外判断。官方推荐使用onRestoreInstanceState来进行数据恢复。
在onRestoreInstanceStateonSaveInstanceState 方法中,系统自动为我们做一定的恢复工作。比如帮我们恢复文本框中用户输入的数据等。
2、资源内存不足导致低优先级的Activity被杀死。
当系统配置发生改变后,如何才能使Activity不被重新创建?
Activity指定configChanges属性。
<activity android:configChanges="orientation|screenSize" />
- 第一章 Activity的生命周期和启动模式
- 第一章 Activity的生命周期和启动模式
- 第一章: Activity的生命周期和启动模式:
- 第一章 Activity的生命周期和启动模式
- 第一章、Activity 的生命周期和启动模式
- Android开发艺术-第一章Activity的生命周期和启动模式
- 回顾基础知识--第一章:Activity的生命周期和启动模式
- 第一章Activity的生命周期和启动模式(Android开发艺术探索)
- Android 开发艺术与探究 第一章 Activity 的生命周期和启动模式
- Activity的生命周期和启动模式-Android开发艺术探索读书笔记第一章
- Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
- Android开发艺术探索读书笔记 第一章 Activity的生命周期和启动模式
- Android 艺术开发探索 第一章 Activity 的生命周期和启动模式观后感
- 《Android开发艺术探索》读书笔记-第一章 Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式总结
- Activity的生命周期和启动模式
- Activity的生命周期和启动模式
- androidStudio中出现finished with non-zero exit value 2 或者 finished with non-zero exit value 1
- sqlite3之sqlite3_busy_handler使用详解
- ios 用objective c语言编写的tomcat动画
- 签到 2016.6.9
- c++作业2
- 第一章 Activity的生命周期和启动模式
- 判别分析基础
- hadoop从安装到布署
- 经典算法——求绝对值溢出问题
- Android中的回调
- ubuntu下搭建erlang编程环境
- 机器学习基础(三十) —— 线性回归、正则化(regularized)线性回归、局部加权线性回归(LWLR)
- swift-UITabBarController 设置选中和未选中状态文字图片颜色或使用原图
- ios:画直线和虚线