我有一些數據要加載到Android碎片中。我需要建立網絡連接。我想知道什麼是開始加載數據最合適的方法。它應該是最適合初始化/加載數據的Android碎片方法
onCreateView()
或
onStart()
或
onResume()
?
謝謝!
我有一些數據要加載到Android碎片中。我需要建立網絡連接。我想知道什麼是開始加載數據最合適的方法。它應該是最適合初始化/加載數據的Android碎片方法
onCreateView()
或
onStart()
或
onResume()
?
謝謝!
IMO onCreate()
是最合適的選擇。因爲如果Fragment轉到後臺並再次到達前臺,則此回調不包含在生命週期中。只有在創建片段時纔會調用它。
在onCreateView和任何後續回調中,您必須確定何時要調用網絡。如果您選擇onCreate(),這將消失。
如果需要上下文,onAttach()是更好的選擇。因爲onAttach()將獲取Activity作爲參數並且像onCreate()獨立於前景/背景生命週期。
但是你必須確保當網絡響應時你的視圖是!= null。在調用onViewCreated()之後可以訪問視圖。 –
@DavidCorsalini這是我不推薦使用onCreate()的推理() – 0xSina
如果您需要Context(或Activity)實例來實例化Loader,例如,您應該將這段代碼放在onActivityCreated()中。 – krossovochkin
我通常在onResume()
這樣做。然後我只是使用boolean
來知道我是否需要獲取數據。
if(!dataFetched){
fetchData();
dataFetched = true;
}
你可以預見的,但你需要檢查你的意見是可訪問的,如果他們不,你必須保持數據和`的onCreate使用它onViewCreated()
onCreate(){ //or onActivityCreated() if you need Context
fetchData();
}
onViewCreated(){
if(data != null) loadDataInViews();
}
onNetworkResponseArrived(Data response){ //Method called by the network callback
if(views != null){ loadDataInViews(); }
else { data = response }
}
()'... –