这是我参与「第四届青训营」笔记创作活动的第2天。
Activity的形态
Acitivity的四种形态: Running、Paused、Stopped 和Killed。
- Runing:此时Activity处于Activity栈的最顶层,可见,并与用户进行交互。
- Paused:当Activity失去焦点,被一个新的非全屏的Activity或者一个透明的Activity放置在栈顶时,Activity就转化为Pausde形态。但它只是失去了与用户交互的能力,所有信息状态、成员变量都还保持着,只有在系统内存极低的情况下,才会被系统回收掉。
- Stopped:如果一个Activity被另外一个Activity完全覆盖,那么Activity就会进入Stopped形态。此时,它不再可见,但却依然保持了所有状态信息和成员变量。
- Killed:当Activity被系统回收掉或者Activity从来没有创建过,Activity就处于Killed形态。
Activity生命周期
下图揭示了一个Activity的生命周期
正常情况下,Activity的常用生命周期有以下几种情况:
- onCreate():Activity启动后第一个被调用的函数,常用来进行Activity的初始化,如创建View,绑定数据和恢复数据。
- onStart():当Activity显示在屏幕上时,函数被调用。
- onRestart():Activity从停止状态进入活动状态时调用。
- onResume():Activity可以接受用户输入时,该函数被调用,此时的activity位于activity栈的栈顶。
- onPause():当Activity进入暂停状态时,该函数被调用,一般用来保存持久的数据或释放占用的资源。
- onStop():当Activity变为不可见后,该函数被调用,Activity进入停止状态。
- onDestroy():在Activity被终止前被调用。
Activity启动与销毁过程
在系统调用onCreate(),就会马上调用onStart(),然后继续调用onResume()以进入Resume状态,最后就会停在Resumed状态,完成启动。系统会调用onDestroy()来结束一个Activity的声明周期让它回到Killed形态。
Activity的暂停与恢复过程
当栈顶的Activity部分不可见后,就会导致Activity进入Pause形态,此时就是调用onPause()方法,当结束阻塞后,就会调用onResume()方法来恢复到Resume形态。