Android Fragment方法最适合初始化/加载数据



我有一些数据加载在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;
    }
}

最新更新