在我的 android 应用程序中,我使用了 3 个不同的异步任务。2 个任务正在 Activity A 中运行,第 3 个任务在 Activity B 中。当我在 OS 版本 2.3 的模拟器中运行应用程序时,应用程序运行正常。但是,当我在 Android 4.0 或更高版本中尝试时,只有第一个 Asynctask 正在运行。
有没有办法在 4.0 及更高版本中运行所有 3 个异步任务?
在我的 android 应用程序中,我使用了 3 个不同的异步任务。2 个任务正在 Activity A 中运行,第 3 个任务在 Activity B 中。当我在 OS 版本 2.3 的模拟器中运行应用程序时,应用程序运行正常。但是,当我在 Android 4.0 或更高版本中尝试时,只有第一个 Asynctask 正在运行。
有没有办法在 4.0 及更高版本中运行所有 3 个异步任务?
您可以执行以下操作:
YourAsyncTaskClassObjectName.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
而不是正常执行:
YourAsyncTaskClassObjectName.execute()
这实际上适用于我的简单非商业应用程序。现在,我有两个 asynctasks 的 doInBackground 方法永远运行(我在每个里面都有 while(true) )。
警告:我并不是说这是最好的设计,但这确实有效。
在 Android 4.0 中,AsyncTask 只被授予一个后台执行线程,即一次只能运行一个。这与 FroYo 中的行为相同,但在 Gingerbread 中被取消了。因此,您可以运行多个 AsyncTask。所以最好的方法是序列化你的 AsyncTasks。并行化将导致不可预测的结果。
嗨,您必须编写自己的执行者。请关注帖子
这是正确的行为。AsyncTask 自 Android 4.0 以来,一直执行。