現在我已經研究了這個問題,我正在重寫這個以使其更清晰。如果您正在尋找更多信息,則可以在舊編輯中找到一些信息。從另一個應用程序啓動時,應用程序將失去記憶它的堆棧的能力
正在發生的事情:
(這指的是沒有設置任何launchMode 設置的應用程序,所以使用默認值)
你是從市場還是從啓動應用安裝程序。這 啓動該應用程序的根/主要活動與 FLAG_ACTIVITY_NEW_TASK標誌並且沒有類別。眼下 應用堆棧[A]
這樣就可以進行應用程序中的下一個活動。現在 堆在這項任務是[A> B]
然後你按home鍵,然後從任一主屏幕或應用程序托盤按下它的圖標重新啓動相同的應用程序 。
在這一點上的預期是活動B將顯示,因爲 這是你離開的地方。但顯示A並且任務堆棧爲 [A> B> A]使用以下標誌以 啓動A的第二個實例:FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_RESET_IF_NEEDED和FLAG_ACTIVITY_BROUGHT_TO_FRONT。它 也有android.intent.category.LAUNCHER類別。
在這一點上,如果你打的返回鍵,它會返回到B,因爲它 是,當你離開它。
查看文檔,看起來好像 FLAG_ACTIVITY_BROUGHT_TO_FRONT只應針對 使用singleTask或singleTop launchModes的活動設置。但是,這個 應用程序尚未設置任何啓動模式,因此使用默認標準launchMode 。
我認爲這不是在這種情況下發生?
我還應該注意到,一旦進入這個奇怪的狀態,每當應用程序從主屏幕或應用程序托盤啓動時,它都會發生。如果任務完成(重新啓動 電話,強制停止應用程序或完全通過 堆棧)會解決此問題,並且不會再正確啓動它。 只有從安裝程序或市場啓動應用程序,然後嘗試從啓動器啓動應用程序時纔會發生。
總之,爲什麼會發生這種情況?有沒有辦法阻止它?
你非常謹慎!同樣的事情發生在我的應用程序中,我真的不知道該怎麼辦!特別是因爲當我從Eclipse內安裝apk時,它工作正常。 – 2011-11-28 16:58:18
[從Android應用程序安裝程序和主屏幕啓動應用程序時的活動堆棧排序問題可能存在重複](http://stackoverflow.com/questions/6356467/activity-stack-ordering-problem-when-launching-application-from- android-app-inst) – blahdiblah 2014-05-19 21:41:30