场景1:ActivityA启动ActivityB,ActivityB启动ActivityC,此时用户看到的是ActivityC。ActivityB的启动模式是singleTask。此时用户点击home键,再点击应用图标返回,看到的是ActivityC。
场景2:ActivityA启动ActivityB,ActivityB启动ActivityC,此时用户看到的是ActivityC。ActivityA的启动模式是singleTask。此时用户点击home键,再点击应用图标返回,看到的是ActivityA。
以上两个场景ActivityA都是App入口Activity。
我的问题是:为什么会出现场景2这样的现象,如果是因为入口Activity被设置了singleTask,点击应用图标时重启了入口Activity的话,场景2是没有问题的。但如果是这样,场景1里的ActivityA不应该也会被重启吗?用户看到的不应该是ActivityA了吗?为什么能够到ActivityC呢。总之我觉得这两个是非常矛盾的,希望了解的开发者给解释一下。
PHP中文网2017-04-17 17:26:09
Two situations for setting singleTask
singleTask
的两个情况
当你启动的singleTask
的Activity
不是栈底(即前面有启动Activity
)时,他会处与当前栈的栈顶,如果其上存在Activity
则会移除。这就是你的第一种场景。
当你启动的singleTask
的Activity
是栈底(即第一个启动的Activity
)时,他会启动一个新栈,与后面开启的Activity
Activity
of the singleTask
you start is not at the bottom of the stack (that is, Activity
was started before), it will be in the current stack The top of the stack will be removed if Activity
exists on it. This is your first scenario. Activity
of the singleTask
you start is at the bottom of the stack (i.e. the first Activity
to start), it will start a The new stack is not in the same stack as the Activity
opened later. This is your second scenario. 🎜🎜
🎜