search

Home  >  Q&A  >  body text

android - Activity singleTask后台切换错误

场景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呢。总之我觉得这两个是非常矛盾的,希望了解的开发者给解释一下。

ringa_leeringa_lee2771 days ago474

reply all(2)I'll reply

  • 迷茫

    迷茫2017-04-17 17:26:09

    What is the startup mode of activityA in scenario 2?

    reply
    0
  • PHP中文网

    PHP中文网2017-04-17 17:26:09

    Two situations for setting singleTasksingleTask的两个情况

    • 当你启动的singleTaskActivity不是栈底(即前面有启动Activity)时,他会处与当前栈的栈顶,如果其上存在Activity则会移除。这就是你的第一种场景。

    • 当你启动的singleTaskActivity是栈底(即第一个启动的Activity)时,他会启动一个新栈,与后面开启的Activity

      • When the 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.
    • 🎜When the 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. 🎜🎜 🎜

      reply
      0
  • Cancelreply