0

我不明白如何在活動的launchmode和意圖標誌之間做我的用例。Android lauchmode和單實例

我想要做什麼:

A => B => C => B when i back B => C => A 

換句話說,我希望擁有的所有活動的單個實例在堆棧內,如果我還記得單一實例的一個活動去堆棧的頂部(重置或銷燬+重新創建沒有重要性,我的創建邏輯onresume如此),例外我的自定義splashscreen(但我解決這個沒有歷史活動「splashscreen」)。

我試過標準模式與標誌 Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP或與此flag Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT但沒有我想要的行爲。

所以,如果你可以告訴我哪個發射模式和/或我應該使用的標誌作出我想要的,我將不勝感激。

回答

1

FLAG_ACTIVITY_REORDER_TO_FRONT看來你的情況適合:

FLAG_ACTIVITY_REORDER_TO_FRONT

如果傳遞給Context.startActivity()的意圖設置,該標誌將導致啓動的活動被帶到前面的任務的歷史堆棧,如果它已經在運行。

例如,考慮一個由四個活動組成的任務:A,B,C,D。如果D調用startActivity()並將Intent解析爲活動B的組件,那麼B將被帶到歷史堆棧,結果順序如下:A,C,D,B。如果還指定了FLAG_ACTIVITY_CLEAR_TOP,則該標誌將被忽略。

如果我們在上面的描述中漏下活動d我們得到:

A,B,C(啓動B)=> A,C,B

這似乎是你想要什麼。

+0

我試過了,那工作正常,但事情是在每次調用時啓動應用程序的新實例(當您點擊按鈕顯示當前應用程序啓動時,我看到了與我啓動的屏幕相同的數量。這個?) – Illuyankas

+0

嗯,我發現解決方案只需將lauchmode設置爲標準(我忘記更改singleInstance/singleTask,顯然這導致了問題)。 – Illuyankas