3. SingleTask
栈内复用模式, 只要Activity在一个栈中存在, 多次调用时, 都不会创建实例, 即单例模式.
情况包含以下几种:
(1) 任务栈不存在, 初次启动SingleTask实例, 会创建任务栈和实例.
MainActivity启动TestA, TestA启动TestB, TestB是SingleTask, 并且任务栈不同. 观察可知, 系统包含两个任务栈, TestB位于其他任务栈中.
Stack #1:
Running activities (most recent first):
TaskRecord{d5d53d4 #2727 A=me.chunyu.spike.stack U=0 sz=1}
Run #2: ActivityRecord{1d720e55 u0 me.chunyu.spike.wcl_activity_launchmode_demo/.TestBActivity t2727}
TaskRecord{a3f797d #2726 A=me.chunyu.spike.wcl_activity_launchmode_demo U=0 sz=2}
Run #1: ActivityRecord{ffd689d u0 me.chunyu.spike.wcl_activity_launchmode_demo/.TestAActivity t2726}
Run #0: ActivityRecord{192310ac u0 me.chunyu.spike.wcl_activity_launchmode_demo/.MainActivity t2726}
使用taskAffinity属性, 添加新的Activity栈, 与SingleTask配合使用, Standard模式无效.
新任务栈是 me.chunyu.spike.stack .
(2) 任务栈存在, 初次启动SingleTask实例, 会直接入栈, 与Standard模式相同.
(3) 任务栈相同, 再次启动SingleTask实例, 实例会置于栈顶, 并清除其上面实例, 具有clearTop的效果.
MainActivity启动TestA, TestA启动TestB, TestB是SingleTask, TestB启动TestC, TestC重新启动TestB, 则TestC会出栈. 观察可知, TestC出栈, TestB位于栈顶.
Stack #1:
Running activities (most recent first):
TaskRecord{18230815 #2737 A=me.chunyu.spike.wcl_activity_launchmode_demo U=0 sz=3}
Run #4: ActivityRecord{1126c300 u0 me.chunyu.spike.wcl_activity_launchmode_demo/.TestBActivity t2737}
Run #3: ActivityRecord{3114fee8 u0 me.chunyu.spike.wcl_activity_launchmode_demo/.TestAActivity t2737}
Run #2: ActivityRecord{f8e235d u0 me.chunyu.spike.wcl_activity_launchmode_demo/.MainActivity t2737}










