溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Activity與Fragment比較

發(fā)布時間:2020-06-12 07:34:21 來源:網(wǎng)絡(luò) 閱讀:603 作者:屠夫章哥 欄目:移動開發(fā)

? 最近寫了一個項(xiàng)目,使用開源中國的框架。整個項(xiàng)目就定義兩個Activity,一個主頁Activity,一個容器Activity。利用反射技術(shù)在容器Activity里裝Fragment。一開始,我還切以為喜,但是為什么這個世界是辯證的呢?

? 1)Activity里有l(wèi)aunchMode,F(xiàn)ragment沒有,也是說Activity由棧來維護(hù)了,但是Fragment沒有,

? ?不過也可以用Stack自己來實(shí)現(xiàn)。容器Activity的launchMode不能寫死,要轉(zhuǎn)換成里面Fragment的

? ?launchMode。

? 2)Activity有key相關(guān)的事件,F(xiàn)ragment沒有,如果要在Fragment里監(jiān)聽,需要從Activty里傳遞。


? 3)Fragment不需要注冊

? 4)Fragment比較輕量化

? 5)Fragment必需要依賴于Activity

?

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

? ? 由幾個Fragment組成,通過hide和show來組織Fragment,當(dāng)show的時候,F(xiàn)ragment會自動的執(zhí)行

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

? ? 經(jīng)常用于自動請求網(wǎng)絡(luò)數(shù)據(jù),那么即使Fragment沒有“正直可見”卻走了這兩個方法,解決如下

? ??http://www.2cto.com/kf/201501/368954.html

? ??http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1021/1813.html


? ?我的代碼,在BaseFragment里設(shè)置一下:

? ?

@Override
public?void?onResume()?{
????super.onResume();
????//可見才去加載數(shù)據(jù)
????if(!isHidden()){
????????onLazyLoad();
????}
}

?? 然后在onLazyLoad里即可進(jìn)行請求網(wǎng)絡(luò)的操作。


  • Android的Fragment中onActivityResult不被調(diào)用解決

    https://blog.csdn.net/qq_36099573/article/details/79941936? ?(在Fragment里就調(diào)用Fragment的startActivityForResult方法,不要getActivity()之后再調(diào)用)



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI