Activity的启动模式
Activity共有四种启动模式:standard、singleTop、singleTask、singleInstance。
在清单文件中为Activity设置启动模式,不设置默认是standard模式
各个模式详解:
1. Standard
默认值。系统在启动 activity 的 task 中创建一个新的 activity 实例,并把 intent 传送路径指向它。 该 activity 可以被实例化多次,各个实例可以属于不同的 task,一个 task 中也可以存在多个实例。
- singleTop
如果 activity 已经存在一个实例并位于当前 task 的栈顶,则系统会调用已有实例的 onNewIntent() 方法把 intent 传递给已有实例,而不是创建一个新的 activity 实例。 activity 可以被实例化多次,各个实例可以属于不同的 task,一个 task 中可以存在多个实例(但仅当 back stack 顶的 activity 实例不是该 activity 的)。
比如,假定 task 的 back stack 中包含了根 activity A 和 activities B、C、D(顺序是 A-B-C-D;D 在栈顶)。 这时过来一个启动 D 的 intent。 如果 D 的启动模式是默认的"standard",则会启动一个新的实例,栈内容变为 A-B-C-D-D。 但是,如果 D 的启动模式是"singleTop",则已有的 D 实例会通过 onNewIntent() 接收这个 intent,因为该实例位于栈顶——栈中内容仍然维持 A-B-C-D 不变。 当然,如果 intent 是要启动 B 的,则 B 的一个新实例还是会加入栈中,即使 B 的启动模式是"singleTop"也是如此。
- singleTask
系统将创建一个新的 task,并把 activity 实例作为根放入其中。 但是,如果 activity 已经在其它 task 中存在实例,则系统会通过调用其实例的 onNewIntent() 方法把 intent 传给已有实例,而不是再创建一个新实例。 此 activity 同一时刻只能存在一个实例。
注意: 虽然 activity 启动了一个新的 task,但用户仍然可以用回退键返回前一个 activity。
- singleInstance
除了系统不会把其它 activity 放入当前实例所在的 task 之外,其它均与"singleTask"相同。 activity 总是它所在 task 的唯一成员;它所启动的任何 activity 都会放入其它 task中。
阅读更多- Android 2.3 Activity启动模式浅析
- Activity的4种启动模式
- Activity的启动模式
- Activity启动模式与任务栈(Task)全面深入记录
- Android利用activity启动模式退出整个应用
- 【Android开发艺术探索读书笔记】 第一章 Activity的生命周期与启动模式
- android-activity之singleTask启动模式
- Android多任务切换与Activity启动模式SingleTask之间关系的分析
- Activity启动模式
- Android Activity 启动模式
- Android开发艺术探索(一)——Activity的生命周期和启动模式
- Activity的启动模式
- android中Activity的四种启动模式(lauchmode)
- Activity四种启动模式
- Activity的四种启动模式和onNewIntent()
- activity活动的四种启动模式
- Android Activity启动模式分析
- android开发之Activity启动模式图文详解
- Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags();singleTask的两种启动方式。
- Activity四种启动模式