【Android进阶】Activity的生命周期和启动模式
in Android with 0 comment

【Android进阶】Activity的生命周期和启动模式

in Android with 0 comment

本博客是《Android开发艺术探索》的笔记,文章不会照着书上一顿抄,而是按着自己的理解用例子和通俗易懂的语言来梳理书上的知识。希望能对也在读这本书的人起到一些帮助。

Activity

Activity是最常用的组件,它有一些不容易搞清楚的概念。

Activity无异常情况下的生命周期

Activity启动时会经历 onCreate→onStart→onResume

这里拿出比较难以理解的 onStart 和 Resume 这一组作对比

一个 Activity 上出现了一个弹窗,此时 Activity 不能和用户交互,即 Activity 不在前台,此时 onPause 会调用 但是这个Activity还是可以看得到的,所以 onStop 方法不会被调用。

多个Activity启动的调用顺序

如果有两个Activity,分别是A和B,当在A中启动B时调用顺序如下 A.onPause→B.onCreate→B.onStart→B.onResume 当旧的Activity完成onPause后,新的Activity才能启动,所以在onPause不能做费时的操作

###Activity异常情况下的生命周期 Activity在两种情况下会被销毁并重新创建。

简单来说,异常下的生命周期也就只是在正常的生命周期下插入了两个方法,一个方法用来储存销毁前的数据,一个方法用来恢复数据。

这两个方法必须是异常销毁的情况下才会被调用 恢复数据也可以在onCreate中进行,但是由于onRestoreInstanceState被调用时,参数savedInstanceState肯定是有值的,而onCreate不一定有值,所以要做空判断处理。推荐用onRestoreInstanceState处理。

Activity的启动模式

Activity有四种启动模式, standard:系统默认的模式,谁启动了Activity,这个Activity就会启动在谁的任务栈中 singleTop:若 Activity 已经在栈顶则不会再创建,而是会调用onNewIntent方法 singleTask:比如 Activity A,A 会先寻找需要的任务栈,如果不存在,则新建任务栈,把A放进新任务栈中。如果存在所需要的任务栈,则会查看任务栈里是否有A,如果有A则清空A上的 Activity 并且调用它的 onNewIntent 方法,如果没有就在栈顶创建A。 singleInstance:单例模式,Activity 会创建一个新的任务栈,后续操作都不会重新创建这个Activity。