【笔记】【Android】Activity的Task模式
笔记系列,内容是从网络搜索的结果,不一定是正确的理解。
如果存在谬误,欢迎大家指正。
Task
一个应用可能会包含多个Activity,管理这些Activity顺序的容器,就是Task。
- 当Activity1拉起Activity2时,Task会将Activity2压栈,将显示Activity2的内容。
- 当用户点击Back按钮时,Task会将Activity2出栈,继续显示Activity1的内容。
为什么要创建多个Task
Launcher以及App是相对独立的存在。
- 当显示Launcher时,其他App可以在后台等待唤醒。
- 当某个App在显示中时,Launcher可以和其他App在后台等待唤醒。
如果将所有的画面(Activity)混在一起,当多个App进行前后台切换时,画面堆栈的管理将不可实施。
四种模式(Standard,SingleTop,SingleTask,SingleInstance)
标准模式(Standard)
可以重复创建多个实例。
栈顶复用模式(SingleTop)
如果要启动的Activity已经在栈顶,则直接复用,不会创建。
栈内复用模式(SingleTask)
如果Activity已经启动,执行clearTop,将其之上的Activity都出栈。一般用于MainActivity。
栈内唯一模式(SingleInstance)
Activity标志位
FLAG_ACTIVITY_CLEAR_TOP
这个标志位可以用于需要返回Task栈中某个Activity的场景。针对Activity的一次性设置。
FLAG_ACTIVITY_NEW_TASK
启动一个Activity,并且将其放到一个全新的Task中。
适用于以下情况。
- 外部的其他App启动另一个App的情况。
- 一个没有界面的Service或者BroadcastReceiver等拉起Activity的情况。
- 启动一个需要独立Task栈的情况。