场景一:应用A -->MainActivity--->Test1-->Test2--->Test3--->Test4--->Test5--->Test6--->Test7--->Test8
其中Test4是singleTask的
应用B-->MainActivity--->Test4
此时查看栈情况可以发现应用A只有一个栈,
栈内分别是MainActivity--->Test1-->Test2--->Test3--->Test4
而Test5--->Test6--->Test7--->Test8都已经弹出销毁
场景二:应用A -->MainActivity--->Test1-->Test2--->Test3--->Test4--->Test5--->Test6--->Test7--->Test8
其中Test4是singleInstance的
应用B-->MainActivity--->Test4
此时查看栈情况可以发现共有三个栈,
最底部的是应用A的栈,有MainActivity--->Test1-->Test2--->Test3--->Test4--->Test5--->Test6--->Test7--->Test8
其次是Launcher的栈
最上面是 Test4的singleInstance的栈,栈内只有一个Activity,Test4
其实还有一个应用B的栈看不到,应用B的栈应该是在Launcher上面
所以这个时候按回退键,应该是Test4-->应用B-->Launcher,这样应用A的栈只是回退的话就回不去了。
博客通过两个场景分析了不同启动模式下Activity栈的情况。场景一中Test4为singleTask,应用A栈内部分Activity弹出销毁;场景二中Test4为singleInstance,出现三个栈,按回退键的顺序有变化,应用A栈回退受限。
1734

被折叠的 条评论
为什么被折叠?



