您好,登錄后才能下訂單哦!
? 最近寫了一個項(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ò)的操作。
https://blog.csdn.net/qq_36099573/article/details/79941936? ?(在Fragment里就調(diào)用Fragment的startActivityForResult方法,不要getActivity()之后再調(diào)用)
免責(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)容。