星期六, 10月 29, 2011

Activity (五)

Android應用程式學習筆記

我們把生命周期的所有回調方法列在以下表中,對每個回調方法進行描述以及它是否可以被系統殺掉。


MethodDescriptionKillable after?Next
onCreate()Always followed by onStart().當activity第一次被建立時呼叫該方法,該方法用來完成靜態設置-建立視圖、為lists綁定數據等等。該方法傳入一個Bundle物件的參數,Bundle物件包含了activity前一次的狀態。該方法執行完後,接著一定執行onStart()方法。NoonStart()
    onRestart()
Activtiy已經被停止之後,再次啟動前呼叫onRestart()方法。接著執行的一定是onStart()方法。
NoonStart()
onStart()Activity在讓用戶看見之前呼叫該方法。如果activity到達前台,呼叫onResume()方法;如果activity隱藏起來,呼叫onStop()方法。NoonResume()
or
onStop()
    onResume()在activity開始與用戶互動之前呼叫該方法。Activity在此點是位在activity佇列的頂端,可以接收用戶的輸入。接著一定呼叫onPause()方法。NoonPause()
onPause()當系統開始恢復其他activity時呼叫此方法。該方法是典型用來將為儲存的變動交給永久數據、停止動畫及其他可能會消耗CPU的工作,onPause()裡的工作應該盡可能快速地完成,因為下一個activity將不會被恢復,直到onPause()裡的工作完成。
如果activity回到前台,接著就會呼叫onResume()方法;如果變成用戶看不見,接著就會呼叫onStop()方法。
YesonResume()
or
onStop()
onStop()當activity不再被用戶看見時呼叫onStop()方法,不被用戶看見有可能是因為activity即將被銷毀或是其他的activity已經恢復且覆蓋activity。
如果activity正回來與用戶互動,就會接著呼叫onRestart()方法;如果activity正要停止,接著就會呼叫onDestory()方法。
YesonRestart()
or
onDestroy()
onDestroy()Activity銷毀之前呼叫該方法,這是activity最後接收的呼叫。可能因為activity正在停止(呼叫finish()方法),或是因為系統臨時銷毀activity的使用空間。你可以利用isFinishing()方法分辨這兩個種可能。Yesnothing
注意"Killalbe after"是表示系統是否會在回調方法執行完後的任何時間殺掉activity。三個回調方法標記為"Yes",分別是onPause()、onStop()、onDestroy(),因為onPause()方法是三個方法的第一個,activity一旦被建立,onPause()方法肯定是在程序被殺掉之前最後呼叫的方法-如果系統必須緊急恢復記憶體空間,接著onStop()和onDestroy()可能不會被呼叫。因此你應該利用onPause()方法將決定性數據寫到記憶體。然而你應該選擇保留一些資訊,因為在方法中的任何阻礙程序會阻塞轉到下一個activity而降低用戶經驗。

表記為"No"的回調方法,保護程序不會被殺掉。因此當activity是可被殺的,從onPause()時段到onResume()時段,直到再次呼叫onPause()方法,activity才又可以被殺掉。

沒有留言:

張貼留言