1、Activities
Quickview
Activity是一個可以給使用者提供互動介面的組件。這個介面通常是全螢幕的,當然也可以是浮動於其他視窗之上的一個小視窗。
一個Android應用通常是由好多個有著松耦合的Activity組成。一般是有一個“main”Activity,它會在使用者初次啟動程式時展
現在使用者面前。隨後程式根據使用者的操作來啟動其他的Activity,每當啟動新的Activity的時候,先前的activity就“stopped”
了(但其並沒有別銷毀),系統將其儲存在“back stack”中,而新啟動的Activity就被放在了“back
stack”的棧首,並展現在螢幕的最前端。當使用者完成了與棧首的Activity的互動後,通過點擊BACK鍵,棧首的Activity即被從棧裡
pop出來並銷毀了,先前的Activity resumes。
2、Activities lifestyle
Activity的三種狀態:
Resumed該activity處於螢幕的前端並擷取了使用者的焦點。Paused該activity是部份可視的,但是使用者焦點在浮動於此activity視窗之上的另一個activity上。 Stopped該activity是不可見的,當然也沒有使用者焦點。
注意:當程式處於Paused和Stopped狀態時,如果系統記憶體很低的情況下,系統會將此進程kill掉來節省記憶體。Activity的回呼函數(Activity裡以“on”開頭的函數):
onCreate()
onRestar()
onStart()
onResume()
onPause()
onStop()
onDestory()
由可見:
onResume()和onPause()是一對,在Activity是否擷取使用者焦點時調用
onRestart()、onStart()和onStop()屬於一個環,根據Activity是否可見被調用
當程式處於Paused和Stopped狀態時(即回呼函數onStop()或onPause()被調用了之後),如果系統記憶體很低的情況下,系統會將此Activity銷毀掉來節省記憶體。
Table 1. A summary of the activity lifecycle's
callback methods.
Method |
Description |
被調用後是否可以被殺掉? |
Next |
onCreate() |
當Activity初次被建立或當其記憶體被奪取然後又被使用者使用時調用。可給此方法傳遞一個參數:Bundle,它包含了此activity先前的狀態。 |
No |
onStart() |
|
onRestart() |
當之前狀態為stopped,現在要變為可見時調用。 |
No |
onStart() |
onStart() |
當Activity要變為可見時調用。 下一個被調用的函數為什麼會是onStop()??
|
No |
onResume() or onStop() |
|
onResume() |
當Activity要擷取使用者焦點時調用。 |
No |
onPause() |
onPause() |
當系統要resuming另外的一個Activity時調用(也即其失去焦點時)。 最好在此方法中儲存下一些變數資料。 |
Yes |
onResume() or onStop() |
onStop() |
當Activity變為不可見時調用。 |
Yes |
onRestart() or onDestroy() |
onDestroy() |
當Activity要變為destoried時調用。 當調用了finish()方法或系統為節省記憶體空間臨時銷毀此Activity的執行個體時此回調方法會被調用。 可以用 isFinishing()來區別這兩種情況。
|
Yes |
nothing |