activity和fragment混合使用時的生命週期
阿新 • • 發佈:2019-01-03
上篇文章講到了activity四種模式下調整時的生命週期,這篇文章我們聊聊activity和fragment混合使用時的兩者的生命週期
先看下面對比圖:
1. activity啟動時順便載入裡面的fragment,這種情況下的生命週期如下:
- onCreate過程
- Activity &&&& onCreate...
- Fragment **** onAttach...
- Fragment **** onCreate...
- Fragment **** onCreateView...
-
Fragment **** onActivityCreated...
- onStart過程
- Activity &&&& onStart...
- Fragment **** onStart...
- onResume過程
- Activity &&&& onResume...
- Fragment **** onResume...
- onPause過程
- Fragment **** onPause...
- Activity &&&& onPause...
- onStop過程
- Fragment **** onStop...
-
Activity &&&& onStop...
- onStart過程
- Activity &&&& onStart...
- Fragment **** onStart...
- onResume過程
- Activity &&&& onResume...
- Fragment **** onResume...
- onPause過程
- Fragment **** onPause...
- Activity &&&& onPause...
- onStop過程
- Fragment **** onStop...
-
Activity &&&& onStop...
- onDestroy過程
- Fragment **** onDestroyView...
- Fragment **** onDestroy...
- Fragment **** onDetach...
- Activity &&&& onDestroy...
2. activity A啟動時順便載入裡面的fragment A,點選按鈕跳轉到activity B啟動時順便載入裡面的fragment B,這種情況下的生命週期如下:
onCreate過程 ActivityA和FragmentA建立 ActivityA &&&& onCreate... FragmentA **** onAttach... FragmentA **** onCreate... FragmentA **** onCreateView... FragmentA **** onActivityCreated... onStart過程 ActivityA &&&& onStart... FragmentA **** onStart... onResume過程 ActivityA &&&& onResume... FragmentA **** onResume... 點選按鈕ActivityA替換成ActivityB FragmentA **** onPause...ActivityA &&&& onPause... ActivityB &&&& onCreate...
FragmentB **** onAttach... FragmentB **** onCreate... FragmentB **** onCreateView... FragmentB **** onActivityCreated... ActivityB **** onStart...
FragmentB **** onStart...
ActivityB **** onResume...
FragmentB **** onResume... FragmentA **** onStop... ActivityA **** onStop...
按下返回鍵 onPause過程 FragmentB **** onPause... ActivityB &&&& onPause... ActivityA **** onStart... FragmentA **** onStart... ActivityA **** onResume... FragmentA **** onResume... FragmentB **** onStop... ActivityB **** onStop... onDestroy過程 FragmentB **** onDestroyView... FragmentB **** onDestroy... FragmentB **** onDetach... ActivityA &&&& onDestroy...
3.activity A啟動時順便載入裡面的fragment A,fragment A更換成fragment B,這種情況下的生命週期如下:
FragmentA **** onStop... FragmentA **** onStop... FragmentA **** onDestroyView... FragmentA **** onDestroyView... FragmentA **** onDestroy... FragmentA **** onDetach... FragmentB **** onAttach... FragmentB **** onAttach... FragmentB **** onCreate... FragmentB **** onCreate... FragmentB **** onCreateView... FragmentB **** onCreateView... FragmentB **** onActivityCreated... FragmentB **** onActivityCreated... FragmentB **** onStart... FragmentB **** onStart...
FragmentB **** onResume... FragmentB **** onResume...
按下返回鍵 FragmentA **** onDestroy... FragmentA **** onDetach... onPause過程 FragmentB **** onPause... ActivityA &&&& onPause... onStop過程 FragmentB **** onStop... ActivityA &&&& onStop... onDestroy過程 FragmentB **** onDestroyView... FragmentB **** onDestroy... FragmentB **** onDetach... ActivityA &&&& onDestroy...
今晚總結到這裡,哈哈,大家感興趣也可以試試不同場景下的跳轉activity和fragment的生命週期,經過這兩節的講解,面試問到activity和fragment的生命週期大概能夠秒殺了。