android - 手機(jī)橫豎屏?xí)r,fragment里的實(shí)例如recyclerview對(duì)象為null,后臺(tái)返回?cái)?shù)據(jù)時(shí)回調(diào)導(dǎo)致空指針異常
問題描述
手機(jī)橫豎屏切換時(shí),fragment狀態(tài)丟失,導(dǎo)致子線程請(qǐng)求的數(shù)據(jù)回調(diào)顯示時(shí),報(bào)空指針異常,如何解決
問題解答
回答1:感覺像是轉(zhuǎn)屏觸發(fā)了重繪,在Manifast里面給當(dāng)前Activity添加如下屬性試試:android:configChanges='orientation|screenSize'
回答2:不論是旋轉(zhuǎn)屏幕還是關(guān)閉Activity, 都應(yīng)該在Fragment#onDestroy()或者Fragment#onDestroyView()時(shí), 取消網(wǎng)絡(luò)接口的響應(yīng)監(jiān)聽. 否則即便是通過設(shè)置android:configChanges解決屏幕旋轉(zhuǎn)時(shí)Activity重建導(dǎo)致App崩潰的問題, 其他場(chǎng)景也還是有幾率讓App崩潰
建議閱讀下Android源碼去了解下以下幾個(gè)知識(shí)點(diǎn):
Activity是如何管理Fragment的
Fragment是如何管理View的
Activity & Fragment是如何管理Loader的
另外推薦使用 Retrofit + RxAndroid + RxLifecycle 來實(shí)現(xiàn)網(wǎng)絡(luò)接口以及調(diào)用. 頁面數(shù)據(jù)管理可以考慮Loader.
