從導航後A-> B你有兩個任務:第一個包含一個,第二個包含乙 。 B位於頂部,A低於此值。現在
從B-導航時> C ^的Android啓動活動Ç到含有A(它不能啓動它到含有B中的任務,因爲B定義爲「singleInstance」任務,所以它啓動到一個任務具有相同的「taskAffinity」,在這種情況下任務包含A)。爲此,Android將包含A的任務帶到前面。現在您有兩項任務:前面包含A和C的任務,另一個包含低於B的任務。
現在您按BACK鍵完成活動C並返回到任務下方的活動,即C。您仍有2個任務:一個包含C的前一個,另一個包含B 。
現在您再次按下BACK鍵。這完成了活動A(並因此完成了持有A的任務),並將任務堆棧中的前一個任務帶到前面,即包含B的任務。你現在有1級的任務:包含B.
任務在你其他情形,從A-> B-> C^導航之後,你開始2項任務:包含A和C在面前的任務,第二個包含B以下的B。
現在您按HOME按鈕。你現在說你「通過長按」回到應用程序「。這不完全正確。您不能「回到應用程序」。你只能「回到任務」。但是你有兩個不同的任務:如果你長時間按下,你應該看到2個任務。它們可能具有相同的圖標(除非您爲活動B提供了不同的圖標),因此您可能無法區分它們。如果您選擇包含A和C的任務,那麼該任務將被帶到最前面,活動C位於最前面。如果您現在按下BACK鍵,活動C將完成並且其下的活動將顯示活動A.如果您現在再次按下BACK鍵,則活動A將結束,您將返回到HOME屏幕。包含B的任務仍在最近的任務列表中,但它不再位於其他任務下的任務堆棧中,因爲當您按HOME按鈕時,它就像回到零。你重新開始。您沒有任何活動任務,因此所有任務都在一行中,它們不在堆棧中,也沒有層次結構。
另外,在您的問題中,您使用短語「退出應用程序」。這也不完全正確。 BACK按鈕按下的唯一一件事就是完成當前活動。如果當前活動是任務中唯一的活動,它也會完成該任務。但是,它不會「退出應用程序」。特別是在你的情況,因爲你的「應用程序」實際上存在於2個獨立的任務。
希望這是明確的。
非常感謝David。您的回答非常清楚地解釋了這個概念,非常有幫助:)爲了增加更多細節,我在同一個應用程序中將所有這三項活動A,B和C都包含在內。在長時間的家庭報刊上,我看不到兩個單獨的任務,但只有一個。 另外就其他情景而言,「如果您現在再次按下BACK鍵,則活動A將完成並且您將返回到主屏幕。」 **問:**爲什麼不需要我們包含B的任務,因爲包含B的任務應該低於包含A和C的任務權限?如果我錯了,請糾正我。 – Pravy
請張貼您的清單,然後我可以幫助您更多。只需將它作爲編輯添加到您的問題。 –
嘿Pravy,你的困惑終於解決了嗎?爲什麼不讓我們的任務包含B?我也有同樣的困惑。如果你知道,請告訴我。謝謝。 – CodeAlien