美文网首页
异常情况下的Activity生命周期----《android艺术

异常情况下的Activity生命周期----《android艺术

作者: 绮怀先生 | 来源:发表于2018-04-23 20:57 被阅读16次
    情况1:资源相关的系统配置发生改变导致activity被杀死并重新创建

    例子:横竖屏切换,默认activity会被销毁重新创建(系统配置发生改变:横竖屏)

    • Acivity(横屏)---> onSaveInstanceState(Bundle) --->onPause--->onStop-->onDestory
    • 在onSaveInstanceState之后就会重新创建Activity(竖屏):onCreate(Bundle)-->onRestoreInstanceState(Bundle) ;
    • 系统会保存恢复视图结构:文本框的用户数据的数据,以及listview滚动位置等view相关的状态 ;
    • Activity委托window去保存数据,window再委托它上面的顶级容器去保存数据.
    • 顶级容器是viewGroup,一般可能就是DecorView,它通知自己的子元素保存数据.
    • 这是一种委托思想:上层委托下层,父容器委托子元素去处理一件事.
    • 这种思想在android中很常见:view的绘制过程,事件分发.数据恢复过程也是如此.
    • 检验是否掌握该知识的问题:
      • onSaveInstanceState,onRestoreIntanceState什么时候会被调用?或者onCreate中bundle什么情况下会有值?
      • 横竖屏切换activity是如何进行数据保存以及恢复的?
    情况2:资源内存不足导致低优先级Activity被杀死

    数据保存与恢复和情况1相同.

    • activity的优先级
      • 前台activity: 正在和用户交互,优先级最高
      • 可见但不是前台activity:如acitivity中弹出对话框,导致该activity可见但是位于后台,无法与用户交互(弹出对话框时,acitivity处于onPause中)
      • 后台acivity:已经被暂停的activity.比如执行了onStop.优先级最低.
    • 一个进程中没有四大组件,进程很快就会被杀死.

    相关文章

      网友评论

          本文标题:异常情况下的Activity生命周期----《android艺术

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