將iOS UIViewController和Android Activity的主要生命週期事件放到一起比對,也還是有點意思的,一種天下武功出少林,形變神不變的感覺。
如下:
iOS(UIViewController) | Android(Activity) | ||
事件 | 備註 | 事件 | 備註 |
alloc | 分配內存地址,相當於Java的new時的前半段(分配內存),但不包括後半段(類的構造函數) | ||
init / initWithNibName | 初始化對象,初始化數據 | onCreate | 當第一次調用一個Activity就時執行onCreate,定義UI,初始化成員變量,啓動服務和創建線程等。 |
loadView | 在控制器的view爲nil的時候被調用。 此方法用於以編程的方式創建view的時候用到。注意調用此方式時view還沒有生成。 | ||
viewDidLoad | view已經生成,可以進行自定義數據、動態創建控件等創造做 | ||
此時狀態:Created | |||
onRestart | onRestart()方法則是隻在activity從stopped狀態恢復時纔會被調用 | ||
viewWillAppear | 視圖出現前(即將出現)調用 | onStart | onStart方法後Activity處於可見狀態 |
viewDidAppear | 視圖已經出現(出現後)調用 | onResume | 得到焦點的時候、後臺回到前臺時調用onResume,此方法調用後,Activity可與用戶進行交互; |
此時狀態:Visible/Runing(等待事件中) | |||
viewWillDisappear | view即將失去焦點、不在前臺顯示時被調用 | onPause | Activity失去與用戶的交互能力時被調用,如鎖屏、退出、被覆蓋、按Home鍵回到主屏時 |
此時狀態:Hidden | |||
viewDidDisappear | view已經不可見了,但變量等在存在 | onStop | 當Activity處於不可見狀態的時候就會調用onStop方法。此時適合處理一些較耗時的資源關閉,寫數據庫等操作等。 |
在ios6被廢棄了,因爲Clearing references to views is no longer necessary。 | |||
dealloc | 視圖被銷燬時調用,此時適合做在init和viewDidLoad中創建的對象進行釋放。 | onDestory | 當Activity被銷燬時會調用onDestory方法。此時適合做關閉onCreate中創建的線程、回收可能造成內存泄露的資源等。 |
此時狀態:Destoryed |
另外附上一些官方圖,加深理解:
iOS:
Android: