Android開發之Activity生命週期

        Android應運程序的生命週期是由系統同意掌控的,也就是說,我們並不能改變一個應運程序的生命週期,只能學習並適應系統本身的生命週期管理機制。
       爲什麼手機系統會有生命週期管理機制呢?簡單點說,當你的手機運行了很多個應用程序的時候,你又想運行新的程序,或者有電話打來了,那麼手機的資源是有限的,在有限的資源下,系統會優先地選擇執行一些功能,比如打接電話,收發短信等等。那麼,這時候,系統就會自動中斷一些應運程序以保證優先級高的功能的運行。另外,當某個應用程序佔用系統資源太高的時候,也有可能被幹掉的哦。
那麼接下來就來談談Android系統的Activity的生命週期,Google給出的Android開發文檔給出了Activity的生命週期的代碼,如下:
public class ExampleActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // The activity is being created.
    }
    @Override
    protected void onStart() {
        super.onStart();
        // The activity is about to become visible.
    }
    @Override
    protected void onResume() {
        super.onResume();
        // The activity has become visible (it is now "resumed").
    }
    @Override
    protected void onPause() {
        super.onPause();
        // Another activity is taking focus (this activity is about to be "paused").
    }
    @Override
    protected void onStop() {
        super.onStop();
        // The activity is no longer visible (it is now "stopped")
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // The activity is about to be destroyed.
    }
}
你自己寫Activity的時候,就需要按照需求來重載這些方法了。當然onCreate是必須有點餓,不然你的程序會運行不聊的。在一個Activity正常啓動的時候,他被調用的順序是:onCreate-->onStart-->onResume-->onPause-->onStop-->onDestory。而Activity要被幹掉的話,也是有順序的,就是onPause-->onStop-->onDestory,這就是一個完整的生命週期。也許你會問,如果程序正在運行着,我想運行其他程序怎麼辦呢?那就會onPause-->onStop,恢復的時候直接onStart-->onResume,如果打斷這個應用程序的是一個Theme爲Translucent 或者Dialog 的Activity那麼只是onPause ,恢復的時候onResume 。
       下面詳細介紹一下在這些方法中我們都能做什麼:
1、onCreate:在這裏創建我們的界面,以及初始化數據的操作;
2、onStart:這裏是用戶可交互但是不可見的,因爲他可能被隱藏或者被遮擋着;
3、onResume:這裏用戶也是可交互的,一個onPause的Activity要重新運行的話就會跳到這裏來;
4、onPause:這一步是用戶可見但是不可交互的。因爲從這裏,你的程序的優先級開始降低,也可能直接被幹掉或者回收,所以在這裏不能執行一些耗時或者耗費系統資源的操作,同時,我們還要在這裏保存數據以便在onResume讀出來。需要注意的是:在這個方法做的事情時間不能太長,因爲下一個Activity不會等到這個方法執行完才啓動的。
5、onStop:這裏也是不可見的,被下一個Activity覆蓋掉了。在這裏可以執行onRestart方法來重新啓用Activity。
6、onDestory:這是activity被幹掉前最後一個被調用方法了,可能是外面類調用finish方法或者是系統爲了節省空間將它暫時性的幹掉,可以用isFinishing()來判斷它,如果你有一個Progress Dialog在線程中轉動,請在onDestroy裏把他cancel掉,不然等線程結束的時候,調用Dialog的cancel方法會拋異常的。
        onPause、onStop、onDestory,這三種狀態下的Activity都可能被系統幹掉,所以爲了保證程序的正常,你要在onPause方法裏將用戶編輯的內容以及需要保存的內容都保存到存儲媒介上或者數據庫中。
   由於本人水平有限,所以可能有些地方理解錯誤或者沒有說到的地方,歡迎大家指正!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章