并行AsyncTask问题(应用程序在任何情况下都不会挂起)

时间:2017-05-12 10:37:33

标签: java android

我有两个asyncTasks,比如A和B.两个都来自不同的活动。当需要调用A然后我的应用程序移动到另一个活动并调用B时,就会出现这种情况。 A的持续时间大于B.现在的问题是,当我调用A然后移动到其他活动并调用B时,它等待A完成然后调用B.

如果必须,请理解问题,然后再进行投票。我彻底搜查了,最后决定问这个问题。

如何使这两个AsyncTasks彼此独立?

1 个答案:

答案 0 :(得分:2)

AsyncTask发布HoneyComb在单个线程上执行:

  

首次引入时,AsyncTasks在单个上串行执行   背景线程。从DONUT开始,这被改成了一个池   允许多个任务并行运行的线程。后   HONEYCOMB,计划将此更改回单个线程   避免并行执行导致的常见应用程序错误。如果你   真正想要并行执行,你可以使用   executeOnExecutor(Executor,Params ...)此方法的版本   THREAD_POOL_EXECUTOR;但是,请参阅那里的评论以获得警告   它的用途。

要并行执行它们:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
     task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
     task.execute();