我有一些数据要加载到Android片段中。我需要建立网络连接。我想知道开始加载数据最合适的方法是什么。应该是吗?
onCreateView()或
onStart()或
onResume()谢谢!
发布于 2014-05-22 17:43:35
IMO onCreate()是最合适的选择。因为如果片段转到后台并再次来到前台,则此回调不包括在生命周期中。只有在创建了片段时才会调用它。
在onCreateView和任何后续回调中,您必须确定何时调用网络。如果选择onCreate(),它将消失。
如果需要上下文,onAttach()是更好的选择。因为onAttach()将获取活动作为参数,并且类似于独立于前台/后台生命周期的onCreate()。
发布于 2014-05-22 17:59:15
我通常在onResume()中这样做。然后,我只需使用boolean来了解是否必须获取数据:
if (!dataFetched) {
fetchData();
dataFetched = true;
}你可以预料到这一点,但你需要检查你的视图是否可访问。如果不是,则必须保留数据并在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;
}
}https://stackoverflow.com/questions/23803095
复制相似问题