1. 程式人生 > >activity和fragment混合使用時的生命週期

activity和fragment混合使用時的生命週期

       上篇文章講到了activity四種模式下調整時的生命週期,這篇文章我們聊聊activity和fragment混合使用時的兩者的生命週期

       先看下面對比圖:

       

    1. activity啟動時順便載入裡面的fragment,這種情況下的生命週期如下:

  1. onCreate過程  
  2. Activity &&&& onCreate...  
  3. Fragment **** onAttach...  
  4. Fragment **** onCreate...  
  5. Fragment **** onCreateView...  
  6. Fragment **** onActivityCreated...  
  7. onStart過程  
  8. Activity &&&& onStart...  
  9. Fragment **** onStart...  
  10. onResume過程  
  11. Activity &&&& onResume...  
  12. Fragment **** onResume...  
  13. onPause過程  
  14. Fragment **** onPause...  
  15. Activity &&&& onPause...  
  16. onStop過程 
  17. Fragment **** onStop...
  18. Activity &&&& onStop...  
  19. onStart過程  
  20. Activity &&&& onStart... 
  21. Fragment **** onStart...  
  22. onResume過程  
  23. Activity &&&& onResume...  
  24. Fragment **** onResume...  
  25. onPause過程  
  26. Fragment **** onPause... 
  27. Activity &&&& onPause...  
  28. onStop過程 
  29. Fragment **** onStop... 
  30. Activity &&&& onStop...  
  31. onDestroy過程  
  32. Fragment **** onDestroyView...
  33. Fragment **** onDestroy... 
  34. Fragment **** onDetach... 
  35. 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,這種情況下的生命週期如下:

onCreate過程  ActivityA和FragmentA建立 ActivityA &&&& onCreate...   FragmentA **** onAttach...   FragmentA **** onCreate...   FragmentA **** onCreateView...   FragmentA **** onActivityCreated...   onStart過程   ActivityA &&&& onStart...   FragmentA **** onStart...   onResume過程   ActivityA &&&& onResume...   FragmentA **** onResume...  點選按鈕fragmentA替換成fragmentB                                    右邊為FragmentTransaction.addToBackStack FragmentA **** onPause...                FragmentA **** onPause...
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的生命週期大概能夠秒殺了。