我有一些数据要加载到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 }
}
()'... –