我有一些数据加载在Android Fragment。我需要进行网络连接。我想知道什么是最合适的方法来开始加载数据。应该是
onCreateView()
或
onStart()
或
onResume()
?
谢谢!
IMO onCreate()
是最合适的选择。因为这个回调不包括在生命周期中,如果片段进入后台,再次来到前台。它只会在Fragment被创建时被调用。
在onCreateView和任何以下的回调中,你必须确定何时要调用网络。如果你选择onCreate(),这个将会消失。
如果需要上下文,onAttach()是更好的选择。因为onAttach()将获得活动作为一个参数,并像onCreate()独立于前台/后台生命周期。
我通常在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;
}
}