2014-05-22 89 views

回答

2

IMO onCreate()是最合適的選擇。因爲如果Fragment轉到後臺並再次到達前臺,則此回調不包含在生命週期中。只有在創建片段時纔會調用它。

在onCreateView和任何後續回調中,您必須確定何時要調用網絡。如果您選擇onCreate(),這將消失。

如果需要上下文,onAttach()是更好的選擇。因爲onAttach()將獲取Activity作爲參數並且像onCreate()獨立於前景/背景生命週期。

+2

但是你必須確保當網絡響應時你的視圖是!= null。在調用onViewCreated()之後可以訪問視圖。 –

+0

@DavidCorsalini這是我不推薦使用onCreate()的推理() – 0xSina

+1

如果您需要Context(或Activity)實例來實例化Loader,例如,您應該將這段代碼放在onActivityCreated()中。 – krossovochkin

1

我通常在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 } 
}