1

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

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

4

4 回答 4

5

您可以执行以下操作:

YourAsyncTaskClassObjectName.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

而不是正常执行:

YourAsyncTaskClassObjectName.execute()

这实际上适用于我的简单非商业应用程序。现在,我有两个 asynctasks 的 doInBackground 方法永远运行(我在每个里面都有 while(true) )。

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

于 2013-04-04T03:10:58.810 回答
4

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

于 2012-12-06T11:32:36.453 回答
1

嗨,您必须编写自己的执行者。请关注帖子

在android4.0中按顺序执行异步任务

于 2012-12-06T11:10:14.313 回答
0

这是正确的行为。AsyncTask 自 Android 4.0 以来,一直执行。

于 2012-12-06T11:16:50.750 回答