2012-09-19 86 views
2

我想討論Android生命週期。我知道Android生命週期如何工作的基礎知識,但是我想問一些問題。Android生命週期:狀態轉換的解釋

  1. 爲什麼Android應用程序不能從運行直接停止,直接停止爲什麼它首先經歷暫停階段?

  2. 爲什麼Android應用程序不像iPhone應用程序那樣直接從Running運行到Destroy?爲什麼它從暫停 - >停止 - >銷燬爲什麼不運行 - >銷燬?

+0

你只是問「他們爲什麼這樣做?」,或者你在Android流程生命週期中遇到了一些具體問題? –

+0

不,我只是想知道爲什麼生命週期以這種方式移動 – maddygoround

回答

2

應用不立即銷燬主要是出於性能的考慮。從Android Developer Activity Reference

Android系統試圖保持周圍長期儘可能 應用程序,但最終將需要在內存不足移除舊的進程 。

如果屏幕仍處於開機狀態,而且也沒有迫切的需要爲您的設備來釋放內存,例如,它顯然更快,用戶如果活動只是暫停,而不是徹底摧毀。多個終端生命週期階段使這成爲可能。

各種回調指示不同的事情。這使您可以將清理功能分爲快速,關鍵項目(與數據庫或網絡連接等系統資源斷開連接)和較長期任務(例如在應用程序啓動時保留用戶數據)。由於您的活動保持儘可能長,因此您可以在用戶暫時暫停活動時避免昂貴的操作。

onPause()是第一個回調,表示您的活動不再處於前臺。例如,如果出現對話框或用戶按下主頁按鈕,應用程序將暫停。例如,如果應用程序暫停進行對話,則您不希望該應用程序因爲它仍然可見而被銷燬。

如果您還收到onStop(),則表示您的活動已不再可見。此時用戶不再看到您顯示的內容。例如,這可能意味着用戶打開了另一個應用程序。但是,即便在這一點上,系統仍然可以保持活動狀態,以便用戶稍後返回。 (但是,如果您/用戶結束了該活動,則不會保留該活動,並且將繼續進行最終生命週期回調。)

onDestroy()是活動銷燬之前的最終回調。請注意,在極端情況下,系統可能會在不調用此方法的情況下銷燬您的活動。