開源中國 OsChina Android 客戶端源碼分析(13)Fragment學習

在客戶端源碼中,咱們能夠看到大量的Fragment,關於Fragment的相關學習,給你們推薦一篇值得學習的博客:服務器

http://blog.csdn.net/lmj623565791/article/details/37970961 學習

本文 主要介紹 Fragment 和Acitivity生命週期的關係,掌握生命週期後,咱們能夠靈活的在各個週期進行相應的業務處理。demo中一個Activity    activity 兩個 Fragment   first  second   ,經過add 方法添加Fragment,切換時經過hidden 和show方法隱藏和顯示。默認首先加載first 。咱們複寫了Acticity 和  Fragment中的 生命週期,在裏面進行簡單的打印操做。因爲demo簡單,再也不粘貼上來。測試



測試彙總狀況以下:spa

一、activity 顯示時,只建立了 first的實例,並無經過事務將first添加到activity中去的話,咱們會發現並不會觸發first的生命週期;由於你沒有將Fragment添加到界面中的話,意味着並無將界面和Fragment創建關聯。.net

二、activity 顯示,建立 first的實例,經過事務將first添加add到activity中去的話,當前能夠看到first。生命週期:blog

     activity :onCreate ,first  :onAttach onCreate onViewCreate   ;生命週期

     activity :onStart ,first  :onStart    ;事務

     activity :onResume,first  :onResume;ci

三、從first 切換到 secon,second首次加載,聲明週期變化:get

    first :onHiddenChanged  結果true first隱藏了。  second: onAttach onCreate onViewCreate onStart  onResume;

四、如今在second  按下hom鍵的週期變化:

    由於first的加載先於second ,咱們很輕易地發現  

    first second  activity   依次onPause ; first  second acticity  一次onStop;

五、在4的基礎上,從新喚醒應用的週期變化,界面中有onRestart,而Fragment沒有的。所以:

   activity  onRestart   ;

   activity  first second  依次onStart      ,activity  first second 一次onResume;

六、當前就在first 再一次的顯示first

   first   onHiddenChanged   中其返回值  先true 再false. 意思先把你隱藏 而後再把你顯示(不隱藏)

七、按返回鍵,關閉界面

  first  second  activity   依次 onPause  ;

  first  second  activitu 依次 onStop;

  first  onDestoyView  onDestory  onDetach ;

  second  onDestoyView  onDestory  onDetach ;

  activity  onDestory.

  

   總結:

 一、Fragment 是界面的一部分,界面能夠有一個或者多個Fragment組成;

 二、因爲Fragment是依附在界面中的,所以,Fragment的生命週期的開始onAttach  晚於 界面的生命週期的開始onCreate;

 三、因爲Fragment是依附在界面中的,所以,Fragment的生命週期的結束起始onPause   早於 界面的生命週期的結束起始onPause;

 四、界面中若是有 多個Fragment ,最早加載的Fragment的生命週期不管開始仍是結束都先於後來加載的Fragment.

 五、Fragment 第一次加載onHiddenChanged不會回調,切換其餘Fragment再切回來到當前的Fragment的時候, 能夠根據是否被隱藏的結果  ,來作一些業務處理,好比說「每次看見fragment的時候都向服務器請求數據「。

      但願簡單的總結,能幫助到你我。贊頂一下嘛,謝謝!!

相關文章
相關標籤/搜索