2013-12-10 46 views
0

比方說,一個應用程序與活動B運行在棧中和活性的頂部是在清單中定義的推出意圖的活動。然後我的應用程序在後臺(不可見),系統暫時殺死我的應用程序,並將其重新啓動。如何處理應用程序暫時地被殺害,然後重新啓動

在這一點上,其活動是否爲系統帶來了第一,活性的(在清單中定義發射意圖)或活性乙?

此外,如果應用程序是暫時地被殺害,然後它重新啓動的時候了,也可能一會兒是死了嗎?

我的應用程序有很多的動態狀態,它也登錄到服務器,所以當應用程序被暫時殺死,那麼我的應用程序的狀態可以在這段時間內改變,當它重新啓動時,我將再次啓動我的應用程序並重新登錄並再次更新其所有狀態。有什麼辦法可以避免嗎?

謝謝。

回答

0

當然,如果應用程序被殺死,那麼它應該從啓動活動開始。如果有登錄選項,那麼你也應該記住我的選擇,以便如果應用程序被殺害,你得到的應用程序狀態,並執行自動登錄,如果記住我設置,否則只需啓動應用程序與登錄過程。

0

我乞求與@Keshav所說的不同。我認爲最後銷燬的活動是重新創建並向用戶展示的活動。我基於當設備配置發生變化時會發生什麼的信念 - 當前活動實際上被銷燬,同樣被重新創建,並且它不是第一個啓動的活動。

至於你應該做的,當你的應用程序被終止或破壞,而它在後臺的規定,您必須參考: http://developer.android.com/guide/components/activities.html#SavingActivityState

+0

我的問題是當應用程序被殺害,而不僅僅是一個活動。此外,我無法保存我的狀態並將其恢復,因爲在我的活動結束後,我的狀態已發生變化,我無法恢復舊保存的狀態。 –

+0

當應用程序被終止時,整個任務被終止。任務是一組活動並具有與其關聯的後備堆棧。因此,如果整個任務被終止,並且用戶或系統再次啓動應用程序,那麼將創建一個新任務(沒有活動在後備棧中),然後@keshav所說的將是真實的。有關http://developer.android.com/guide/components/tasks-and-back-stack.html上任務的更多信息 –

0

您寫道:

比方說,一個應用程序正在運行,活動B位於 堆棧的頂部,活動A是清單中定義的啓動意向 的活動。然後我的應用程序在後臺進行(不可見 ),系統暫時終止我的應用程序,並將其重新備份爲 。

會出現以下情況:您的應用程序創建

  1. 新工藝
  2. Application對象實例化和onCreate()被稱爲它
  3. ActivityB(頂部活動的一個實例上任務堆棧)被實例化並onCreate()被稱爲它

只有當(如果)ActivityB結束時(完成或用戶按BACK按鈕),纔會實例化您的根活動(ActivityA)。

您無法阻止Android在後臺處理應用時將其殺死。但是,您可以確定發生了這種情況並作出了相應的反應。執行此操作的最簡單方法是在根活動或自定義Application類中有一個靜態成員變量*,當您創建根活動並執行其初始化時,您將其設置爲true。在ActivityBonCreate()中,檢查該變量是否設置爲true。如果不是,你的應用程序已經重新啓動,所以你現在可以做出反應。例如,您可以將用戶重定向回根活動,並從頭開始強制啓動應用程序。或者你可以讓用戶等待,而你重新初始化你的應用程序等。

相關問題