2014-05-22 63 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 } 
}