Activity生命週期概述

 

 

1、Activity的整個生命週期如上圖呈金字塔狀:當創建一個Activity新實例時從圖左側的onCreate()事件開始逐漸向頂端走,當到達最頂端的Resumed狀態時便已到可與用戶進行交互的狀態,而當用戶離開Activity或被中斷時,Activity狀態開始往圖右側的底端走;

 

2、一旦onCreate()方法執行完畢,會迅速執行onStart()和onResume(),Activity不會停留在Created或Started狀態,但當onResume()事件被髮生後,Activity會一直維持在Resumed狀態直到一些事情發生(如退出或被半或全遮擋);

 

3、在某些情況下,Activity只會往圖右側的底端走一兩步並在該處等待,這些情況如當前的Activity被半遮擋時會被onPause()並等待在Paused,再如被全遮擋時會被onStop()並等待在Stopped,返回Activity時則從當前等待處重新繞回最頂端;

 

4、無論任何原因使Activity停止或退出,onPause()總是第一個信號,且總是會在onStop()之前,而一旦Activity停止後,系統就有可能會自動銷燬Activity實例以回收內存,甚至會不執行onDestory()而直接殺死應用的進程,因此用onPause()和onStop()來釋放內存更爲可靠;

 

5、當發生onPause()或onStop()時應注意保存用戶數據,也應該銷燬一些耗電操作等以增強用戶體檢,如拍攝類應用在發生onStop()時可停止Camera,當恢復時如在onResume()中再啓用Camera;

 

6、通過onRestoreInstanceState()和onSaveInstanceState()這兩個事件可以將數據保存在Bundle中,以應對Activity被操作系統銷燬及再恢復時的狀態回滾,onRestoreInstanceState()發生在onResume()事件之前,onSaveInstanceState()發生在onResume()事件之後。

 

總之,正確使用Activity生命週期可保障應用程序有良好的表現,必須注意如下幾個方面

當用戶接聽電話或者轉去另外一個應用程序時,不要讓程序崩潰;

當用戶沒有激活使用它時,不消耗寶貴的系統資源;

當用戶離開你的應用程序並在稍後的時間返回,不會丟失用戶的進度;

當用戶屏幕在橫向與縱向旋轉切換時,不會崩潰或者丟失用戶進度。