一张图看明白 Android Activity 生命周期
2017-04-06 10:40
309 查看
Android-Activity生命周期
原文链接:https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode/blob/master/android/Android-Activity%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.md
概述
作为四大组件中我们使用最频繁的 Activity,它的生命周期大家都了解。 然而面试中经常问到可见它的重要性。下面从两个方面来分析一下 Activity 的生命周期和一些需要注意的细节。Activity 生命周期图
典型情况下生命周期分析
一般情况下,当当前 Activity 从不可见重新变为可见状态时,onRestart 方法就会被调用。当用户打开新的 Activity 或者切换到桌面的时候,回调如下:onPause -> onStop,但是如果新Activity采用了透明主题,那么 onStop 方法不会被回调。
当用户再次回到原来的 Activity 时,回调如下:onRestart -> onStart -> onResume。
onStart 和 onStop 对应,它们是从 Activity 是否可见这个角度来回调的;
onPause 和 onResume 方法对应,它们是从 Activity 是否位于前台这个角度来回调的。
从 Activity A 进入到 Activity B ,回调顺序是 onPause(A) -> onCreate(B) -> onStart(B) -> onResume(B) -> onStop(A),所以不能在 onPause 方法中做重量级的操作。
异常情况下生命周期分析
onSaveInstanceState 方法只会出现在 Activity 被异常终止的情况下,它的调用时机是在 onStop 之前,它和 onPause 方法没有既定的时序关系,可能在它之前,也可能在它之后。 当 Activity 被重新创建的时候,onRestoreInstanceState 会被回调,它的调用时机是 onStart 之后。系统只会在 Activity 即将被销毁并且有机会重新显示的情况下才会去调用 onSaveInstanceState 方法。
当 Activity 在异常情况下需要重新创建时,系统会默认为我们保存当前 Activity 的视图结构,并且在 Activity 重启后为我们恢复这些数据。
比如:文本框中用户输入的数据、 listview 滚动的位置等,这些 view 相关的状态系统都会默认为我们恢复。
具体针对某一个 view 系统能为我们恢复哪些数据可以查看 view 的源码中的 onSaveInstanceState 和 onRestoreInstanceState 方法。
Activity按优先级的分类
前台 Activity > 可见但非前台 Activity > 后台 Activity
android:configChanges=”xxx” 属性,常用的主要有下面三个选项:
local:设备的本地位置发生了变化,一般指切换了系统语言;
keyboardHidden:键盘的可访问性发生了变化,比如用户调出了键盘;
orientation:屏幕方向发生了变化,比如旋转了手机屏幕。
配置了 android:configChanges=”xxx” 属性之后,Activity就不会在对应变化发生时重新创建,而是调用 Activity 的 onConfigurationChanged 方法。
参考资料
Google官方开发文档-Activity《Android 开发艺术探索》
更多文章
https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode
相关文章推荐
- 两分钟让你彻底明白Android Activity生命周期的详解(图文介绍)
- 两分钟彻底让你明白Android Activity生命周期
- 两分钟彻底让你明白Android Activity生命周期
- Android - 小问题 一张图彻底理解Activity/Fragment的生命周期
- android activity生命周期的一张经典图片
- 两分钟彻底让你明白Android Activity生命周期
- 两分钟彻底让你明白Android Activity生命周期
- 【Android】一张图记录2个Activity切换时生命周期的执行情况
- 两分钟明白 Android Activity生命周期
- 一张图明白Activity和Fragment对应的生命周期
- Android 开发:第一日——明白Android Activity生命周期
- 看一遍就明白android activity的生命周期
- 两分钟彻底让你明白Android Activity生命周期
- android之activity生命周期
- Android中Activity的生命周期
- Android中Activity的生命周期
- Android的七巧板Activity之一 Activity的生命周期 推荐
- ANDROID的Activity的生命周期
- Android Activity& service&Broadcast receiver 生命周期
- Android---Activity生命周期状态