Android之路 3.活动的生命周期

返回栈

Android中的活动是可以层叠的。每启动一个新的活动,就会覆盖在原活动之上,然后点击Back键会销毁最上面的活动,下面的一个活动就会重新显示出来。

其实Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,他会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。

活动状态

1. 运行状态

当一个活动位于栈顶

2. 暂停状态

当一个活动不再处于栈顶位置,但仍然可见时

3. 停止状态

当一个活动不再处于栈顶位置,并且完全不可见的时候

4. 销毁状态

当一个活动从返回栈中移除后

活动的生存期

1. onCreate()

活动第一次被创建的时候调用。用于完成活动的初始化操作,比如加载布局,绑定事件等。

2.onStart()

在活动由不可见变为可见的时候调用

3.onResume()

在活动准备好与用户进行交互的时候调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。

4.onPause()

在系统准备去启动或者恢复另一个活动的时候调用。通常会在这里释放资源、保存一些关键数据。

5.onStop()

在活动完全不可见的时候调用。他和onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法并不会执行。

6.onDestory()

在活动被销毁之前调用,之后活动的状态将变为销毁状态

7.onRestart()

在活动由停止状态变为运行状态之前调用,也就是活动被重新qidongle

Activity的生命周期循环

1、完整的生命周期

自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在onCreate()中设置所有全局状态以完成初始化,而在onDestroy()中释放所有系统资源。如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()中创建线程,而在onDestroy()中销毁线程。

2、可视生命周期

自onStart()调用开始直到对应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,也许它并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留这个Activity需要的所有资源。当用户不再看见显示的内容时,可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。onStart() 和 onStop() 方法可以随着应用程序是否为用户可见而被多次调用。

3、前台生命周期

自onResume()调用起,至对应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换。当设备转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。当Activity从子Activity获得结果或者接收到新的Intent时会调用onResume() 方法。
Android之路 3.活动的生命周期