您是否应为每个不同的呼叫创建新的异步任务或使用相同的呼叫

时间:2013-08-31 10:48:05

标签: android http android-asynctask

所以我有一个应用程序,可以制作多页HTTP Post / Gets

E.G。 Login,getThisData,getThatData,sendThis,sendThat

最好有一个单独的AsyncTask来处理每个

或者一个异步任务,并通过onPostExecutedoInBackground

中的切换以不同方式处理它们

干杯

4 个答案:

答案 0 :(得分:7)

简短回答是肯定的,你应该为每次通话创建一个新的AsncTask

如果你感兴趣,那么答案很长;

根据Android's Asynctask documentation

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

快乐的异步编码! : - )

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

如果要创建一个AsyncTask实例,并多次执行(),则不:
Execute AsyncTask several times

如果您在询问设计:是否应该编写一个类来获取不同类型的数据?这取决于你的具体情况:
如果这些HTTP调用应该是顺序的,那么可以将它们放在一个AsyncTask类中 如果它们有很多共同之处,只需指向不同的URI,就可以编写一个调用(String uri)方法,并在AsyncTask中调用该方法。这种情况,我认为一个AsyncTask也足够了。