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() 方法。