天天看點

Activity與Fragment比較

  最近寫了一個項目,使用開源中國的架構。整個項目就定義兩個Activity,一個首頁Activity,一個容器Activity。利用反射技術在容器Activity裡裝Fragment。一開始,我還切以為喜,但是為什麼這個世界是辯證的呢?

  1)Activity裡有launchMode,Fragment沒有,也是說Activity由棧來維護了,但是Fragment沒有,

   不過也可以用Stack自己來實作。容器Activity的launchMode不能寫死,要轉換成裡面Fragment的

   launchMode。

  2)Activity有key相關的事件,Fragment沒有,如果要在Fragment裡監聽,需要從Activty裡傳遞。

  3)Fragment不需要注冊

  4)Fragment比較輕量化

  5)Fragment必需要依賴于Activity

  6)請看官方Fragment的生命周期方法的描述,與Activity是的生命周期是息息相關的。如果主界面

    由幾個Fragment組成,通過hide和show來組織Fragment,當show的時候,Fragment會自動的執行

    onStart與onResume方法,也就是Activity在show會走所有Fragment的這兩個方法。而這兩個方法

    經常用于自動請求網絡資料,那麼即使Fragment沒有“正直可見”卻走了這兩個方法,解決如下

   我的代碼,在BaseFragment裡設定一下:

<code>@Override</code>

<code>public</code> <code>void</code> <code>onResume() {</code>

<code>    </code><code>super</code><code>.onResume();</code>

<code>    </code><code>//可見才去加載資料</code>

<code>    </code><code>if</code><code>(!isHidden()){</code>

<code>        </code><code>onLazyLoad();</code>

<code>    </code><code>}</code>

<code>}</code>

   然後在onLazyLoad裡即可進行請求網絡的操作。

      本文轉自屠夫章哥  51CTO部落格,原文連結:http://blog.51cto.com/4259297/1737956,如需轉載請自行聯系原作者

繼續閱讀