Activity lifetime

Activity lifetime

 

一個Activity基本上有四個生命狀態

  • 當一個Activity在螢幕的最上層時(堆疊的最頂端),它就是屬於activerunning的狀態
  • 失去焦點的這個Activity則處在paused的狀態。像這種paused的activity,會在一種情況下消失,那就是當系統的記憶體不夠用之時,系統會自動判斷,把不重要的activity移除。
  • 如果一個Activity被其它的Activity完全的遮住時,這個被遮的Activity處於stop的狀態,它仍然保有全部的狀態及資料,當系統記憶體不足時,這種stop狀態的activity是最先被系統考慮拿來釋放記憶體的。
  • 當一個Activity處於pause或stop的狀態時,系統可以要求Activity結束(finish)或直接移除(kill)它。當它需要再度呈現在使用者面前時,它必需要能完整的重新啟動及回復先前的狀態。

 

上圖裏有三個主要迴路
(1)entire lifetime
一個Activity的entire lifetime是由onCreate(Bundle)開始,一直到onDestroy()結束。一個Activity可以把所有的資源設定寫在onCreate裏,一直到onDestroy()時,再釋放出來。比如說,你需要一個執行緒在背景執行網路下載資料,這個thread就可以在onCreate()裏建立起來,一直到onDestroy()再把thread釋放不要用。
(2)visible lifetime
一個Activity的visible lifetime則是指在onStart()到onStop()之間,算是"可視生命時期",在這段時間內,使用者可以在螢幕上看見Activity,要注意這個"看見"算是抽象形容詞@@這個Activity不見得一定在前景直接跟使用者可直接互動。比如說:你可以在onStart()註冊一個BroadcastReceiver用來監控並改變你的UI,當使用者不想再看你所呈現的結果時,在onStop()移除註冊的BroadcastReceiver。onStart()跟onStop()可以在activity在visible及hidden兩個狀態切換時多次被呼叫執行。
(3)foreground lifetime
一個foreground lifetime則是指onResume()到onPause()之間,在這個時期的Activity是在所有的Activity的前面,並且直接跟使用者進行互動。 一個Activity能很頻繁的在resume及pause這兩個狀態切換,比如:當一個裝置進行睡眠時,當一個Activity的結果被傳送,當一個新的intent被傳送時。所以在onResume()及onPause()裏實作的程式應盡量精簡。

 

 

右鍵--> source-->override/implement methods 可以彈出相關嚮導

 

 

 

Layout tool

 

DroidDraw  

User Interface (UI) designer/editor for programming the Android Cell Phone Platform

 

http://code.google.com/p/droiddraw/

http://www.droiddraw.org

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章