搜尋

首頁  >  問答  >  主體

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_lee2803 天前507

全部回覆(2)我來回復

  • 迷茫

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

    場景2 的activityA 是什麼啟動模式?

    回覆
    0
  • PHP中文网

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

    設定singleTask的兩個情況singleTask的两个情况

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

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

      • 當你啟動的singleTaskActivity不是棧底(即前面有啟動Activity)時,他會處與目前堆疊的堆疊頂,如果其上存在Activity則會移除。這就是你的第一種場景。
    • #🎜🎜#當你啟動的singleTaskActivity是堆疊底部(即第一個啟動的Activity)時,他會啟動一個新堆疊,與後面開啟的Activity不是處於一個堆疊。這就是你的第二種場景。 #🎜🎜##🎜🎜# #🎜🎜#

      回覆
      0
  • 取消回覆