我們把生命周期的所有回調方法列在以下表中,對每個回調方法進行描述以及它是否可以被系統殺掉。
Method | Description | Killable after? | Next | ||
---|---|---|---|---|---|
| Always followed by onStart() .當activity第一次被建立時呼叫該方法,該方法用來完成靜態設置-建立視圖、為lists綁定數據等等。該方法傳入一個Bundle物件的參數,Bundle物件包含了activity前一次的狀態。該方法執行完後,接著一定執行onStart()方法。 | No | onStart() | ||
|
Activtiy已經被停止之後,再次啟動前呼叫onRestart()方法。接著執行的一定是onStart()方法。
| No | onStart() | ||
| Activity在讓用戶看見之前呼叫該方法。如果activity到達前台,呼叫onResume()方法;如果activity隱藏起來,呼叫onStop()方法。 | No | onResume() or onStop() | ||
| 在activity開始與用戶互動之前呼叫該方法。Activity在此點是位在activity佇列的頂端,可以接收用戶的輸入。接著一定呼叫onPause()方法。 | No | onPause() | ||
| 當系統開始恢復其他activity時呼叫此方法。該方法是典型用來將為儲存的變動交給永久數據、停止動畫及其他可能會消耗CPU的工作,onPause()裡的工作應該盡可能快速地完成,因為下一個activity將不會被恢復,直到onPause()裡的工作完成。
如果activity回到前台,接著就會呼叫onResume()方法;如果變成用戶看不見,接著就會呼叫onStop()方法。
| Yes | onResume() or onStop() | ||
| 當activity不再被用戶看見時呼叫onStop()方法,不被用戶看見有可能是因為activity即將被銷毀或是其他的activity已經恢復且覆蓋activity。
如果activity正回來與用戶互動,就會接著呼叫onRestart()方法;如果activity正要停止,接著就會呼叫onDestory()方法。
| Yes | onRestart() or onDestroy() | ||
| Activity銷毀之前呼叫該方法,這是activity最後接收的呼叫。可能因為activity正在停止(呼叫finish()方法),或是因為系統臨時銷毀activity的使用空間。你可以利用isFinishing()方法分辨這兩個種可能。 | Yes | nothing |
表記為"No"的回調方法,保護程序不會被殺掉。因此當activity是可被殺的,從onPause()時段到onResume()時段,直到再次呼叫onPause()方法,activity才又可以被殺掉。
沒有留言:
張貼留言