在Fragment onCreateView,onCreate或onActivityCreated中发出HTTP请求?

时间:2014-04-27 04:15:13

标签: android android-fragments android-viewpager android-tabs

我在我的应用中使用导航标签。我有3个片段从Internet上加载不同的数据。我想知道在onCreateonCreateViewonActivityCreated中放置发出HTTP请求的代码的最佳位置?

通常,我在onCreateView中放置了所有代码(请求数据,填充适配器,膨胀视图......)。我也看到很多人在互联网上这样做。

但是本指南https://github.com/thecodepath/android_guides/wiki/Creating-and-Using-Fragments以不同的方式做事。所以我想确定要做什么。

2 个答案:

答案 0 :(得分:1)

我通常会使用onResume()中的新状态来刷新代码。我只会在onCreateView中膨胀视图,并可能设置适配器等。

这还取决于您想要数据的新鲜程度。我只需要在用户启动应用程序时加载它,我会将其加载到活动的onCreate中,然后在一个批处理中加载片段的所有数据。然后,您可以存储数据并在不同的片段中检索它。

此外,您始终希望在不同的线程上从Internet加载数据。如果你设置加载片段本身的数据,我会在onCreate中启动一个asynctask,并从asyntask刷新回调片段的视图。在onCreateView中,您可以输入默认值,或让用户知道数据是通过文本或其他通知进行的。

如果您想要真正的新数据,可以在片段的onResume()中启动asynctask。

答案 1 :(得分:0)

回答真的很晚,但是如果您正在发出HTTP请求,建议您将它们放在onActivityCreated()中。 onCreateView非常适合初始化和绑定视图。完成此操作后,就会调用onActivityCreated并返回onCreateView,如您在this SO question的答案中所见。

您可以在SO上详细了解此herehere