Android 基础

Android 四大组件之 Activity

2019-01-23  本文已影响4人  Kevin_小飞象

Activity 的生命周期

生命周期:onCreate() -> onStart() - > onResume() -> onPause() -> onStop() -> onDestroy()


生命周期

注意:当 Activity 中弹出 Dialog 对话框的时候,Activity 不会回调onPause()。
然而当 Activity 启动 Dialog 风格的 Activity 的时候,此 Activity 会回调 onPause() 函数。

异常情况下的生命周期

情况1:资源相关的系统配置发生改变导致 Activity 被杀死并重新创建

比如说当前 Activity 处于竖屏状态,如果突然旋转屏幕,由于系统配置发生了改变,在默认情况下,Activity 就会被销毁并且重新创建,当然我们也可以组织系统重新创建我们的 Activity。


生命周期

系统配置发生改变以后,Activity 会销毁,其 onPause(),onStop(),onDestory()均会被调用,由于 Activity 是在异常情况下终止的,系统会调用 onSaveInstance() 来保存当前 Activity 状态,这个方法的调用时机是在 onStop() 之前。与 onPause() 没有既定的时序关系,当 Activity 重新创建后,系统会调用 onRestoreInstanceState(),并且把 Activity 销毁时 onSaveInstanceState()方法保存的 Bundle 对象作为参数同时传递给 onRestoreInstanceState() 和 onCreate() 方法。
同时,在 onSaveInstanceState() 和 onRestoreInstanceState() 方法中,系统自动为我们做了一些恢复工作,如:文本框(EditeText)中用户输入的数据,ListView 滚动的位置等,这些 View相关的状态系统都能够默认为我们恢复。可以查看 View 源码,和 Activity 一样,每个 View 都有 onSaveInstanceState()方法和onRestoreInstanceState()方法。

情况2:资源内存不足导致低优先级的 Activity 被杀死

这里的情况和前面的情况1数据存储和恢复是完全一致的,Activity 按照优先级从高到低可以分为如下三种:
(1)前台 Activity --- 正在和用户交互的Activity,优先级最高
(2)可见但非前台 Activity --- 比如 Activity 中弹出了一个对话框,导致 Activity 可见但是位于后台无法和用户直接交互。
(3)后台 Activity --- 已经被暂停的 Activity,比如执行了 onStop(),优先级最低。

横竖屏切换,防止重新创建 Activity:Activity 指定 configChange 属性来不让系统重新创建Activity。
android : configChanges = "orientation"

Activity与Fragment生命周期关系

创建过程:


创建过程

销毁过程:


销毁过程

Activity的启动模式

有四种启动模式:standard,singleTop,singleTask,singleInstance。

上一篇 下一篇

猜你喜欢

热点阅读