Activity、Fragment想必大家都不陌生了,直接上圖吧。
-
Fragment生命週期
- Activity、Fragment生命週期兩者對比
- OnCreate()
第一次創建的時候調用。一般用來做一些出數據的操作。比如,加載佈局,初始化事件。。
- OnStart()
在不可見準備變爲可見的時候調用。
- OnResume()
可見,並且有焦點交互的時候,這個時候,這個activity一定在返回棧的棧頂。並且處於運行狀態。
- OnPause()
系統準備去啓動||恢復另外一個activity的時候調用,
- OnStop()
在activity完全不可見的時候調用,
一般在這裏都會把一些在當前這個activity的耗損資源的一些操作釋放了,和保存一些關鍵的數據。這個方法一定要快,不能超過10秒,否者系統就會報ARN了。
和上面的區別在,如果打開新的活動是一個dialog,那麼OnPause會執行,onStop不會執行。
- OnDestroy()finish的時候調用
銷燬之前調用,之後這個activity的狀態就是銷燬狀態了。
- OnRestart()
由停止狀態變爲運行狀態之前調用,就是重啓的時候調用,
- OnSaveInstanceState()
只有在activity即將銷燬的時候,並且有機會重新顯示的時候纔會調用,正常生命週期不會調用。
- fragments的大部分狀態都和activitie很相似,但fragment有一些新的狀態。
onAttached() —— 當fragment被加入到activity時調用(在這個方法中可以獲得所在的activity)。
onCreateView() —— 當activity要得到fragment的layout時,調用此方法,fragment在其中創建自己的layout(界面)。 onActivityCreated() —— 當activity的onCreated()方法返回後調用此方法
onDestroyView() —— 當fragment中的視圖被移除的時候,調用這個方法。
onDetach() —— 當fragment和activity分離的時候,調用這個方法。
- Home鍵回到主界面時又返回時
依次執行:onPause——onSaveInstanceState——onStop——返回——onRestart——onStart——onResume
Fragment一樣依次執行,在activity之後,無此方法則不執行
- 正常銷燬時
activity:onPause——onStop——onDestroy
fragment:onPause——onStop——onDestroyView——onDestroy——onDetach
- 在後臺被意外銷燬又從最近活動重新回到界面時
activity:onCreate——onStart——onRestoreInstanceState——onResume
fragment:onAttach——onCreate——onCreateView——onActivityCreated——onStart——onResume
- 橫豎屏切換時
切橫豎屏(無config配置)
Activity:onPause——onSaveInstanceState——onStop——onDestroy——onCreate——onStart——onRestoreInstanceState——onResume
Fragment:onPause——onSaveInstanceState——onStop——onDestroyView——onDestroy——onDetach——onAttach——
onCreate——onCreateView——onActivityCreated——onStart——onResume——onResume
橫豎屏切換,無配置時,生命週期執行都是一至的,先銷燬在創建。
只要熟透兩者的生命週期走向,面試官問什麼問題都能回答了。