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

时间:2014-05-22 09:40:27

标签: android android-fragments

我在Android片段中加载了一些数据。我需要建立网络连接。我想知道什么是最合适的方法来开始加载数据。应该是

onCreateView()

onStart()

onResume()

谢谢!

2 个答案:

答案 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;
    }
}