【问题标题】:Check Network Connection In a fragment with multiple asyntask检查具有多个异步任务的片段中的网络连接
【发布时间】:2015-08-11 17:20:47
【问题描述】:

当一个片段中应该运行多个异步任务时,检查网络连接的最佳方法是什么。是在 OncreateView 方法中更好地处理它并使用多个 if 语句检查每个异步的网络还是在每个异步任务中处理网络连接并在他们的 doInBackground 中使用 try/catch ? 谢谢。

【问题讨论】:

  • 你想做什么? AsyncTask 是否依赖于前一个成功才能正常工作?根据每个 AsyncTask 之间的工作方式,将确定此问题的正确答案。
  • 实际上,AsyncTasks 之间没有特定的关系。只是在每个异步中从 json 字符串接收到一些数据。

标签: android android-fragments android-asynctask


【解决方案1】:

根据您的问题和评论,我会在创建和启动 AsyncTask 之前检查网络连接。

也就是说,因为您在启动 AsyncTask 时有网络连接并不能保证您在 AsyncTask 的整个生命周期中都会有网络连接,因此请在 AsyncTask 中优雅地处理错误。

当您的片段被销毁时,请确保取消并清除您的 AsyncTasks。否则,您的 AsyncTasks 将使您的片段实例在内存中保留的时间比您希望的要长,因为您的片段可能对 AsyncTask 具有强引用,并且您的 AsyncTask 将对通过某个接口或直接调用它的片段有强引用参考片段。

此外,如果您的 AsyncTask 回调到一个分离的片段,当您运行您的 post-AsyncTask 代码时,该片段很可能会引发异常。

【讨论】:

    【解决方案2】:

    首先,我相信在服务中使用 AsyncTask 会更聪明,否则你很容易“丢失” AsyncTask 并只是浪费它的工作,更不用说它很容易导致内存泄漏。

    您必须在 AsyncTask 中处理错误,否则您的应用会崩溃。所以它有点不言自明:) 这也取决于您是否尝试连接不同的服务,或者一个 AsyncTask 是否需要完成另一个 AsyncTask 等等。

    【讨论】:

    • 如果 AsyncTask 仅用于显示 Fragment/Activity 的信息,为什么要将其推送到服务中?
    • 然后看看当你旋转设备或离开并返回你的应用程序时会发生什么:) 你必须以这种方式处理很多事情。它很容易导致内存泄漏。
    • 可以,但是这些情况可以在片段中处理。
    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    相关资源
    最近更新 更多