【问题标题】:Make HTTP requests in Fragment onCreateView, onCreate or onActivityCreated?在 Fragment onCreateView、onCreate 或 onActivityCreated 中发出 HTTP 请求?
【发布时间】:2014-06-12 17:09:00
【问题描述】:

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

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

但是本指南https://github.com/thecodepath/android_guides/wiki/Creating-and-Using-Fragments 做的事情不同。所以我想确定到底该怎么做。

【问题讨论】:

  • 你得到了答案。请张贴你的答案@tsil

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


【解决方案1】:

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

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

此外,您总是希望在不同的线程上从 Internet 加载数据。如果您设置为在片段本身中加载数据,我将在 onCreate 中启动一个异步任务,并在来自异步任务的回调中刷新片段的视图。在 onCreateView 中,您可以输入默认值,或者让用户知道数据正在通过文本或其他通知发送。

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

【讨论】:

    【解决方案2】:

    回答很晚,但如果您正在发出 HTTP 请求,我建议将它们放在 onActivityCreated() 中。 onCreateView 非常适合初始化和绑定您的视图。 onActivityCreated 一旦完成就会被调用并且 onCreateView 返回,你可以在this SO question的答案中看到。

    您可以在 SO 上阅读更多关于 herehere 的信息。

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2015-05-09
      • 1970-01-01
      • 2017-08-20
      • 2014-01-06
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多