天天看點

Android面試整理(一)-- Fragment生命周期

Fragment每個生命周期方法的意義、作用:

  • setUserVisibleHint():設定Fragment可見或者不可見時會調用此方法。在該方法裡面可以通過調用getUserVisibleHint()獲得Fragment的狀态是可見還是不可見的,如果可見則進行懶加載操作,隻調用一次。。
  • onAttach():執行該方法時,Fragment與Activity已經完成綁定,該方法有一個Activity類型的參數,代表綁定的Activity,這時候你可以執行諸如mActivity = activity的操作。
  • onCreate():初始化Fragment。可通過參數savedInstanceState擷取之前儲存的值,隻調用一次。
  • onCreateView():初始化Fragment的布局。加載布局和findViewById的操作通常在此函數内完成,但是不建議執行耗時的操作,比如讀取資料庫資料清單。
  • onActivityCreated():執行該方法時,與Fragment綁定的Activity的onCreate方法已經執行完成并傳回,在該方法内可以進行與Activity互動的UI操作,是以在該方法之前Activity的onCreate方法并未執行完成,如果提前進行互動操作,會引發空指針異常。
  • onStart():執行該方法時,Fragment由不可見變為可見狀态。
  • onResume():執行該方法時,Fragment處于活動狀态,使用者可與之互動。
  • onPause():執行該方法時,Fragment處于暫停狀态,但依然可見,使用者不能與之互動。
  • onSaveInstanceState():儲存目前Fragment的狀态。該方法會自動儲存Fragment的狀态,比如EditText鍵入的文本,即使Fragment被回收又重新建立,一樣能恢複EditText之前鍵入的文本。
  • onStop():執行該方法時,Fragment完全不可見。
  • onDestroyView():銷毀與Fragment有關的視圖,但未與Activity解除綁定,依然可以通過onCreateView方法重新建立視圖。通常在ViewPager+Fragment的方式下會調用此方法。
  • onDestroy():銷毀Fragment。通常按Back鍵退出或者Fragment被回收時調用此方法。
  • onDetach():解除與Activity的綁定。在onDestroy方法之後調用。

Fragment生命周期執行流程:

  • Fragment建立:setUserVisibleHint()->onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume();
  • Fragment變為不可見狀态(鎖屏、回到桌面、被Activity完全覆寫):onPause()->onSaveInstanceState()->onStop();
  • Fragment變為部分可見狀态(打開Dialog樣式的Activity):onPause()->onSaveInstanceState();
  • Fragment由不可見變為活動狀态:onStart()->OnResume();
  • Fragment由部分可見變為活動狀态:onResume();
  • 退出應用:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()(注意退出不會調用onSaveInstanceState方法,因為是人為退出,沒有必要再儲存資料);
  • Fragment被回收又重新建立:被回收執行onPause()->onSaveInstanceState()->onStop()->onDestroyView()->onDestroy()->onDetach(),重新建立執行onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->setUserVisibleHint();

    橫豎屏切換:與Fragment被回收又重新建立一樣。

    Android面試整理(一)-- Fragment生命周期

繼續閱讀