我在Android片段中加载了一些数据。我需要建立网络连接。我想知道什么是最合适的方法来开始加载数据。应该是
onCreateView()
或
onStart()
或
onResume()
谢谢!
答案 0 :(得分:3)
IMO onCreate()
是最合适的选择。因为如果Fragment进入后台并再次进入前台,则此回调不包含在生命周期中。只有在创建片段时才会调用它。
在onCreateView和任何后续回调中,您必须确定何时调用网络。如果选择onCreate(),这将消失。
如果需要上下文,onAttach()是更好的选择。因为onAttach()会将Activity作为参数获取,就像onCreate()一样,与前景/后台生命周期无关。
答案 1 :(得分:2)
我通常在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;
}
}