2013-04-09 111 views
0

我的應用程序歷史記錄是正常的;當我啓動意圖時,我沒有使用任何花哨的旗幟或任何東西。只有順序的單任務啓動活動。如果我回家,然後使用任務殺手來殺死我的應用程序,那麼下次打開應用程序時,它會在殺死之前的最後一個活動中啓動,而不是聲明的Main活動。此外,如果我然後點擊返回以退出應用程序並重新打開該應用程序,則會在我之前在殺死之前打開的任何活動之前獲得任何活動。殺死後重新打開應用程序,打開以前的活動

像這樣:

=主要活動; B =一些其他活動; Ç =其他活動

  • 打開應用 -
  • 打開乙 -
  • 的Open C - Ç
  • 殺應用與任務的殺手
  • 打開app - C
  • 後退按鈕 - 設備主
  • 打開應用 -
  • 後退按鈕 - 設備主
  • 打開應用 - 一個

我會期望返回堆棧不會以後被記住任務殺死。我希望應用程序始終從聲明的主活動開始,除非它已經在後臺運行。 (因爲殺人正在被利用,所以這裏不是這種情況)但是這兩件事似乎都沒有發生,我不知道爲什麼。

我試圖把一些代碼來設置在我的應用類中的「初始化」布爾上一個的的onCreate,然後要檢查它ç的的onCreate。有一個想法是啓動A的意圖與NEW_TASK和CLEAR_TOP標誌來嘗試檢測和糾正情況,但它仍然展現出相同的確切行爲,除了它也會把A放在任何剩餘的頂部。因此,不是將應用程序啓動到B,而是將應用程序啓動到BA

基於我已閱讀的有關應用程序的活動生命週期和操作系統查殺的所有內容,這是不可能的,但肯定會發生在我所有的測試設備上。有沒有人有任何想法可能會導致這種奇怪的行爲?

+0

每當用戶從主屏幕啓動應用程序時,是否要啓動活動A? – 2013-04-09 23:34:28

+0

這是我的目標,是的。 – Dave 2013-04-10 12:27:49

+0

只有這樣才能使它變得複雜,你會看到很多閃爍,這取決於你的應用任務堆棧的大小。 – 2013-04-10 16:04:43

回答

1

我不認爲你的應用程序有任何問題。大多數任務殺手只會在所選應用程序上調用restartPackage(),最終調用savedInstanceState(),以便您的應用程序保存其狀態。這使得它更有可能從內存啓動,但只有在Android需要內存的情況下。基本上,「任務殺手」應用程序不會殺死任何東西。

從ActivityManager文檔, restartPackage()是相同的killBackgroundProcesses(),後者不 「這是相同的內核殺死這些過程以回收存儲器;所述系統將需要在重新啓動這些過程的護理根據需要創造未來。「

+0

如果我也從Eclipse終止應用程序,這是公平的,我不知道IDE如何執行「終止」功能。是否有可能強制應用程序始終從正確的主要活動開始? – Dave 2013-04-10 14:18:17

相關問題