多个异步任务未在android 4.1中运行

时间:2012-12-06 10:54:24

标签: android android-asynctask

在我的Android应用程序中,我正在使用3种不同的异步任务。 在活动A中运行2个任务,在活动B中运行第3个任务。当我在操作系统版本2.3的模拟器中运行应用程序时,工作正常。但是,当我在Android 4.0或更高版本中尝试时,只有第一个Asynctask正在运行。

有没有办法在4.0及更高版本中运行所有3个异步任务?

4 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

YourAsyncTaskClassObjectName.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

而不是正常的执行:

YourAsyncTaskClassObjectName.execute()

这实际上适用于我的简单非商业应用。现在,我有两个asynctasks的doInBackground方法永远运行(我在每个内部都是(真))。

警告:我不是说这是最好的设计,但这确实有效。

答案 1 :(得分:4)

使用Android 4.0,AsyncTask只授予一个后台执行线程,即一次只运行一个。这与FroYo中的行为相同,但在Gingerbread中解除了。因此,您可以运行多个AsyncTasks。因此,最好的方法是序列化AsyncTasks。并行化将导致不可预测的结果。

答案 2 :(得分:1)

您好,您必须编写自己的执行程序。请关注帖子

execute the async task in serial order in android4.0

答案 3 :(得分:0)

这是正确的行为。自Android 4.0以来的AsyncTask,始终如一地执行。