第1章 Activity的生命周期和启动模式
作为本书的第一章,本章主要介绍Activity相关的一些内容. Activity作为四大组件之首, 是使用最为频繁的一种组件, 中文直接翻译为”活动”, 但是笔者认为这种翻译有些生硬, 如果翻译成界面就会更好理解. 正常情况下, 除了Window, Dialog和Toast, 我们能见到的界面的确只有Activity. Activity是如此重要, 以至于本书开篇不得不讲到它. 当然, 由于本书的定位为进阶书, 所以不会介绍如何启动Activity这类入门知识, 本章的侧重点是Activity在使用过程中的一些不容易搞清楚的概念, 主要包括生命周期和启动模式以及IntentFilter的匹配规则分析. 其中Activity在异常的情况下的生命周期是十分微妙的, 至于Activity的启动模式和形形色色的Flags更是让初学者摸不到头脑, 就连隐式启动Activity中也有着复杂的Intent匹配过程, 不过不用担心, 本章接下来将一一解开这些疑难问题的神秘面纱.
1.1 Activity的生命周期全面分析
本章将Activity的生命周期分为两部分内容, 一部分是典型情况下的生命周期, 另一部分是异常情况下的生命周期. 所谓典型情况下的生命周期, 是指在由用户参与的情况下, Activity所经过的生命周期的改变;而异常情况下的生命周期是指Activity被系统回收或者由于当前设备的Configuration发生改变而改变导致Activity被销毁重建,异常情况下的生命周期的关注点和典型情况下略有不同.
1.1.1 典型情况下的生命周期分析
在正常情况下, Activity会经历如下生命周期.
(1)onCreate: 表示Activity正在被创建, 这是生命周期的第一个方法. 在这个过程中, 我们可以坐一些初始化工作, 比如调用setContentView去加载界面布局资源,初始化Activity所需数据等.
(2)onRestart: 表示Activity正在重新启动. 一般情况下, 当当前Activity从不可见重新变为可见状态时, onRestart就会被调用. 这种情形一般是用户行所导致的, 比如用户按Home键切换到桌面或者用户打开一个新的Activity, 这是当前的Activity就会暂停, 也就是onPause和onStop被执行了, 接着用户又回到了这个Activity, 就会出现这种情况.
(3)