Activity生命周期
2016-03-09 21:44
302 查看
正常情况下
onCreate()-->onStart()-->onResume()->onPause()-->onStop()-->onDestroy()
异常杀死
资源相关的系统文件发生改变导致Activity被杀死并重新创建
当系统配置发生改变后,Activity会被销毁,其onPause、onStop、onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前Activity的状态。这个方法的调用时机是在onStop之前,它和onPause没有既定的时序关系,它既可能在onPause之前调用,也可能在onPause之后调用。需要强调的一点是,这个方法只会出现在Activity被异常终止的情况下,正常情况下系统不会回调这个方法。当Activity被重新创建后,系统会调用onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法。因此,我们可以通过onRestoreInstanceState和onCreate方法来判断Activity是否被重建了,如果被重建了,那么我们就可以取出之前保存的数据并恢复,从时序上来说,onRestoreInstanceState的调用时机在onStart之后。 onRestoreInstanceState一旦被调用,其参数Bundle savedInstanceState一定是有值的,我们不用额外地判断是否为空。 onSaveInstanceState方法还有一点需要说明,那就是系统只会在Activity即将被销毁并且有机会重新显示的情况下才会去调用它。当Activity正常销毁的时候,系统不会调用onSaveInstanceState,因为被销毁的Activity不可能再次被显示。
资源内存不足导致低优先级的Activity被杀死
当系统配置发生改变后,Activity会被重新创建如果当某项内容发生改变后,我们不想系统重新创建Activity,可以给Activity指定configChanges属性。
相关文章推荐
- Linux下查看/修改系统时区、时间
- 中缀表达式转化成后缀表达式
- unity视频笔记——flappy bird
- while循环计算1到100之和
- WIN32汇编语言在窗口添加按钮,点击按钮实现跳转到一个程序或者一个URL。。。
- hibernate和mybatis比较
- 第二周项目3——小试循环(1)
- Oracle数据库的权限、用户、角色管理
- POJ - 2115 C Looooops(扩展欧几里德求解模线性方程(线性同余方程))
- Conditional Random Fields as Recurrent Neural Networks
- poj 2676 深搜之sudo
- 关于VLOOUP函数与index match函数
- SQL实例整理
- SQL实例整理
- SQL实例整理
- 网页页面自动刷新
- SQL实例整理
- tiny_cnn代码详解(1)——开篇
- RHEL6.4编译安装gcc4.8.1
- HeadFirst设计模式之命令模式