Activity
返回栈
Android其实是通过任务(task)来管理Activity的,每一个task都是一组存放在栈中的Activity集合,这个栈也称为返回栈(back stack),栈是一种后进先出的数据结构。在默认情况下,我们启动了一个新的Activity,他就会在返回栈中入栈,并处于栈顶的位置。每当我们启动新的Activity时,都会在返回栈中入栈,且位于栈顶。而当我们back或者finish销毁Activity时,处于当前返回栈栈顶的Activity将会出栈,前一个入栈的Activity将会处于栈顶的位置。系统总是会显示处于栈顶的Activity给用户。
Activity的状态
运行状态
当Activity处于栈顶,且为可见状态时,即为运行状态。系统不愿意回收可见状态的Activity,因为这会给用户带来极差的体验。
暂停状态
当Activity不处在栈顶,且不完全为可见状态时,即为暂停状态。
例如对话框形式的Activity即只占用了部分区域的Activity
系统也不愿意回收这种Activity,只有在内存极低的情况下系统才会去考虑回收这种Activity停止状态
当Activity不处于栈顶,且完全不可见时,即为停止状态,系统仍然会为这种Activity保存相应的状态和成员变量,但这并不是完全可靠的,当其他地方需要内存时,处于停止状态的Activity有可能被系统回收。
销毁状态
一个Activity从栈中移除后就变成了销毁状态。系统倾向于回收这种状态的Activity,以保存系统内存的充足。
未完待续…
Activity的启动模式
1 |
|
- standard
- 创建一个活动并入栈
- singleTop
- 直接使用栈顶的活动,若需求活动不处于栈顶,则依旧重新实例化该活动并入栈
- singleTask
- 检测返回栈中已存在的活动,若需求活动已存在则直接使用置于栈顶并将其上的活动出栈。若不存在则重新实例化并入栈
- singleInstance
- 创建一个单独的共享返回栈来存放管理该模式的活动,以便于提供给其他程序对于该活动实列的访问。