问题:当我们添加activity的launchMode属性时,发生了什么?
<activity android:name=”.MainActivity” android:launchMode=”singleTop”> </activity>
假设A、B、C、D、E、F是我们创建的活动界面。
launchMode=”singleTop”
添加launchMode=“singleTop”到D。
情景1:
活动栈的初始状态
D-D在活动栈的顶端
C
B
A
从服务、其它应用或者其它一些位置启动D
活动栈的最终状态
D-旧的实例,通过onNewIntent(Intent intent)获取extras data
C
B
A
情景2:
活动栈的初始状态
C
B
A
从服务、其它应用或者其它一些位置启动D
活动栈的最终状态
D -正常启动
C
B
A
情景3:
活动栈的初始状态
C
D
B
A
从C启动D
活动栈的最终状态
D -因为上一个D不在顶端,新的实例将被创建
C
D
B
A
launchMode=”singleTask”
添加launchMode=”singleTask”到 C.
情景1:
活动栈的初始状态
D
C
B
A
启动C
活动栈的最终状态
C -旧的实例,通过onNewIntent(Intent intent)获取 extras data
B
A
实际上– D 销毁了
情景2:
活动栈的初始状态
B
A
启动C
活动栈的最终状态
C -正常启动.
B
A
launchMode=”singleInstance”
添加launchMode=”singleInstance”到 E.
情景1:
活动栈的初始状态
D
C
B
A
Start E
活动栈的最终状态
E
— — — — — — — — — — — — — — — — — — — — — — —
D
C
B
A
信息 — A , B , C , D 在一个任务中,而 E 在另一个任务中.
并且,如果继续从E启动F,那么
活动栈的最终状态
F
D
C
B
A
— — — — — — — — — — — — — — — — — — — — — — —
E
信息 — A , B , C , D , F 将会在一个任务,而 E在另一个任务中.
另一种情景:
活动栈的初始状态
A
B
— — — — — — — — — — — — — — — — — — — — — — —
E
从A启动E
活动栈的最终状态
E -旧的实例, 通过onNewIntent(Intent intent)获取extras data
— — — — — — — — — — — — — — — — — — — — — — —
A
B
launchMode=”standard”
添加launchMode=”standard”到 B.
活动栈的初始状态
D
C
B
A
启动B
活动栈的最终状态
B -新实例
D
C
B
A