2010年4月1日 星期四

Activity的生命週期


一個activity被建構執行到結束,會經歷不同的狀態,每一個activity狀態切換完全由Android系統管控。Android系統在變更activity狀態前,會透過呼叫activity的onXX()方法來通知該activity。因此,我們可以覆寫這些方法程式碼,讓Android系統適時地為activity執行特定作業,說明如下:
onCreate(Bundle)
activity第一次被啟動時會執行onCreate,可在onCreate進行只需執行一次的初始化作業,例如,onCreate的引數可能是null或先前由onSaveInstanceState()方法儲存的狀態資訊。
onStart()
表示activity即將變為可視狀態 (visible)。
onResume()
activity即將進入執行中狀態 (Running),表示activity已顯示完成,可以開始與使用者互動。
onPause()
activity即將進入暫停狀態 (Paused),通常是因為別的activity被啟動。一旦activity進入暫停作業中狀態並不保證可以再回到執行中狀態,因此如果需要儲存程式的狀態,應該在onPause()方法中進行。
onStop()
activity即將進入停止狀態 (Stopped),此時使用者已不能與activity互動。如果系統資源不足,Android系統可能會直接將你的process終止,而不會呼叫onStop。
onRestart()
表示activity從stopped狀態再次被啟用。
onDestroy()
表示activity即將被終止 (Destroyed)。如果系統資源不足,Android系統可能會直接將你的process終止,而不會呼叫onDestroy。
onSaveInstanceState(Bundle)
onSaveInstanceState預設會儲存每一介面元件的狀態,一般而言,activity無須覆寫此方法。
onRestoreInstanceState(Bundle)
onRestoreInstanceState預設將activity回復到之前onSaveInstanceState()方法儲存的狀態。一般而言,activity無須覆寫此方法。

5 則留言:

  1. Y修最近我和思竹正在研究Android的生命週期,有興趣大家不妨一齊研究。

    回覆刪除
  2. 我比較好奇 程式進入點從哪裡進入的
    因為android沒有 main funtion
    是不是從activity開始
    然後在setContentView(new ____(this));
    開始呼叫並執行後面的程序 是這樣嗎?

    回覆刪除
  3. 目前有許多框架程序都看到main function,因為main function被封裝起來,如VB。Android應用程式大部份都會有Activty,所以在Activity被建立時,會呼叫下面
    public void onCreate(Bundle savedInstanceState)
    訊息處理函式。

    回覆刪除