Activity在异常情况下的生命周期——Android开发艺术探索笔记
来源:互联网 发布:数据分析建模方法 编辑:程序博客网 时间:2024/05/18 19:18
原文链接http://sparkyuan.me转载请注明出处
Activity在异常情况下的生命周期
关于Activity正常情况下的生命周期请参考这篇文章http://blog.csdn.net/l664675249/article/details/48895903,本文主要讲解Activity在异常情况下的生命周期。
情况1:资源相关的系统配置发生改变
资源相关的系统配置发生改变,举个栗子。当前Activity处于竖屏状态的时候突然转成横屏,系统配置发生了改变,Activity就会销毁并且重建,其onPause, onStop, onDestory均会被调用。因为实在异常情况下终止的,所以系统会调用onSaveInstanceState来保存当前Activity状态。这个方法是在onStop之前,与onPause没有固定的时序关系。当Activity重建的时候系统会把onSaveInstanceState所保存的Bundle作为对象传递给onRestoreInstanceState和onCreate方法。
注:
- View的源码中每个View都有onSaveInstanceState和onRestoreInstanceState这两个方法。
- 接收位置可以是onRestoreInstanceState和onCreate方法,区别是:onRestoreInstanceState如果被调用,参数Bundle一定是有值的,在onCreate中需要判断参数是否为null。
- onSaveInstanceState只有在Activity即将销毁并有机会重新显示时才会调用,正常销毁的Activity生命周期中不会调用,比如:旋转屏幕,按Home键,启动新Activity等。
情况2:资源内存不足导致低优先级Activity被杀死
Activity优先级
- 前台Activity——正在和用户交互的Activity,优先级最高
- 可见但非前台Activity——Activity中弹出的对话框导致Activity可见但无法交互
- 后台Activity——已经被暂停的Activity,优先级最低
系统内存不足是,会按照以上顺序杀死Activity,并通过onSaveInstanceState和onRestoreInstanceState这两个方法来存储和恢复数据。
不让Activity重新创建的方法
系统配置有很多内容,当某项改变时,我们不想让Activity重新创建可以在AndroidMainfest中给Activity指定configChanges属性。比如
android:configChanges="orientation"
configChanges属性非常多,具体可参考官方文档
常用的有locale, orientation和keyboardHidden这三个。
原文链接http://sparkyuan.me转载请注明出处
2 0
- Activity在异常情况下的生命周期——Android开发艺术探索笔记
- android开发艺术探索 1 Activity典型情况下的生命周期
- Android开发艺术探索(研读笔记)——01-Activity的生命周期
- Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
- 《Android开发艺术探索》笔记 — Activity的生命周期和启动模式
- **读Android开发艺术探索学习笔记--Activity的生命周期**
- Android开发艺术探索笔记(1)- Activity的生命周期
- Android开发艺术探索-Activity的生命周期
- 开发艺术探索阅读总结(1.2)异常情况下的生命周期分析
- 《Android 开发艺术探索》随手笔记——第一章Activity生命周期和启动模式
- Android 开发艺术探索(笔记)--1. Activity 生命周期
- 《Android开发艺术探索》笔记——Activity异常终止时存储和恢复数据
- 《Android开发艺术探索》读书笔记——Activity的生命周期和启动模式
- Android开发艺术探索学习-Activity跳转时的生命周期
- android开发艺术探索学习 之 Activity的生命周期
- 《Android 开发艺术探索》 01-Activity的生命周期和模式
- 《Android开发艺术探索》笔记之Activity的生命周期和启动模式
- 《Android开发艺术探索》之学习笔记(一)Activity的生命周期和启动模式
- hdu2604 Queuing (矩阵快速幂+动态规划)
- 监听listivew滚动距离最优方案
- C++指针函数的定义
- 使用roslaunch调用串口程序时需要的异常退出问题
- 教你制作一个OS X 10.9 Mavericks 安装U盘
- Activity在异常情况下的生命周期——Android开发艺术探索笔记
- SSH进阶(4)——Spring框架入门及环境搭建
- Android ADT安装技巧其常见错误处理
- 操作员计算机绑定
- hdu 2092 整数解
- JSP有哪些内置对象和动作?它们的作用分别是什么?
- 【图书分配】
- android不让程序显示在最近程序列表中
- strcpy 溢出问题