【问题标题】:should you create new Async Tasks for every different call or use the same one您应该为每个不同的调用创建新的异步任务还是使用相同的
【发布时间】:2013-08-31 10:48:04
【问题描述】:

所以我有一个应用程序可以进行多重 HTTP Post/Gets

例如登录、getThisData、getThatData、sendThis、sendThat

有一个单独的 AsyncTask 来处理每个任务会更好吗

或者一个异步任务并使用onPostExecutedoInBackground 中的开关以不同方式处理它们

干杯

【问题讨论】:

    标签: android http android-asynctask


    【解决方案1】:

    简短的回答是肯定的,您应该为每个调用创建一个新的 AsncTask

    如果你有兴趣,长答案是;

    根据Android's Asynctask documentation

    • AsyncTask 的目标是为您处理线程管理,您不必担心线程机制。
    • Android 平台处理线程池以管理异步操作。 AsyncTasks 就像消耗品。该任务只能执行一次(如果尝试第二次执行将抛出异常。)

    快乐的异步编码! :-)

    【讨论】:

      【解决方案2】:

      这取决于任务是相互独立还是相互关联。如果独立,您可以通过相同的异步处理此问题。例如,如果您需要登录响应中的一些数据并将该值传递给 getthis 任务,您最好使用单独的异步。 使登录成为一个单独的异步,getthis ,get lthat sendthis sendthat 可以在一个异步中。

      【讨论】:

        【解决方案3】:

        您可能希望将它们分开,特别是如果它们在前/后执行中的功能不同。尝试将您的代码组织成逻辑块。例如,如果您有一个要登录的异步任务和一个要通过 JSON 下载大量文档数据的异步任务,那么他们将需要单独的异步任务。

        但是,假设您有两个单独的 API 调用返回相似或部分相同的数据 - 如果一个返回文件的详细信息(名称、大小),另一个返回相同的数据但是文件的修订版 -您可以在同一个 ASYNC 中切换它们,因为后执行将执行相同(或部分相同)的代码以从 JSON 中提取数据。

        【讨论】:

          【解决方案4】:

          如果你想创建一个 AsyncTask 的实例,并多次执行它,不:
          Execute AsyncTask several times

          如果你问设计:你是否应该编写一个类来获取不同类型的数据?这真的取决于你的情况:
          如果这些 HTTP 调用应该是连续的,您可以将它们放在一个 AsyncTask 类中。
          如果它们有很多共同点,只需指向不同的 URI,您可以编写一个 call(String uri) 方法,并在 AsyncTask 中调用该方法。这种情况,我觉得一个AsyncTask也够用了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-08-31
            • 2020-11-19
            • 1970-01-01
            • 2013-10-02
            • 1970-01-01
            • 2012-01-18
            • 1970-01-01
            相关资源
            最近更新 更多