Activity、Fragment生命週期、常用面試問題

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

橫豎屏切換,無配置時,生命週期執行都是一至的,先銷燬在創建。

 

只要熟透兩者的生命週期走向,面試官問什麼問題都能回答了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章