Android异常情况下的生命周期分析
2017-09-20 19:28
429 查看
一、资源相关的系统配置发生改变导致Activity被杀死并重新创建
当系统配置发生改变后,Activity会被销毁,其onPause、onStop、onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前Activity的状态。onSaveInstanceState只会在Activity被异常终止的情况下调用,正常情况下系统不会回掉这个方法。这个方法调用的时机在onStop之前,它和onPause没有既定的时序关系,它既可能在onPause之前调用,也可能在onPause之后调用。
当Activity被重新创建后,系统会调用onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法。
onRestoreIntanceState的调用时机在onStart之后。
系统只在 Activity 异常终止的时候才会调用 onSaveInstanceState 和
onRestoreIntanceState 来存储和恢复数据,其他情况下会触发这个过程。
onRestoreIntanceState和onCreate的区别:
onRestoreIntanceState 一旦被调用,其参数 Bundle savedInstanceState 一定是有值的,我们不用额外地判断是否为空;
onCreate 如果是正常启动的话,其参数 Bundle savedInstanceState
为null , 所以必须要额外判断。
但是官方文档建议是采用
onRestoreIntanceState 去恢复数据。
二、资源内存不足导致低幼优先级的 Activity 被杀死
1. Activity 按照优先级从高到低(1) 前台
Activity ---- 正在和用户交互的 Activity,优先级最高
(2) 可见但非前台
Activity ---- 比如 Activity 中弹出了一个对话框,导致 Activity 可见但是位于后台无法和用户直接交互
(3) 后台
Activity ---- 已经被暂停的 Activity ,比如执行了 onStop ,优先级最低
2. 当系统内存不足时,系统就会按照上述优先级去杀死目标 Activity 所在的进程,并在后续通过
onSaveInstanceState 和 onRestoreIntanceState 来存储和恢复数据。
如果一个进程中没有四大组件在执行,那么这个进程将很快被系统杀死,比较好的方法是将后台工作放入 Service 中从而保证进程又一定的优先级,这样就不会轻易地被系统杀死。
相关文章推荐
- Android异常情况下的生命周期分析
- Android异常情况下的生命周期分析
- android开发艺术探索 2 Activity异常情况下的生命周期分析
- Activity在异常情况下的生命周期——Android开发艺术探索笔记
- Activity基础篇之异常情况下生命周期分析
- Android Activity的生命周期和启动模式(一)——典型情况下的生命周期分析
- Android复习-Acitivity的生命周期(二、异常情况下的各种回调)
- Android横向界面锁屏时生命周期异常情况处理--Activity异常销毁重建
- 异常情况下的生命周期分析
- Activity的生命周期及异常情况分析
- Android活动的生命周期之异常生命周期分析(三)
- 1.Activity正常和异常情况下的生命周期分析
- Android Activity的生命周期与异常生命周期的分析
- 异常情况下的生命周期分析
- Android中切换屏幕方向时Activity生命周期函数执行情况分析
- Android 异常退出的生命周期分析
- Activity异常情况下的生命周期分析
- 异常情况下的生命周期分析
- Android运行异常情况分析(持续更新)
- 2.Activity异常情况下的生命周期分析学习笔记