在我的Android应用程序中,我正在使用3种不同的异步任务。 在活动A中运行2个任务,在活动B中运行第3个任务。当我在操作系统版本2.3的模拟器中运行应用程序时,工作正常。但是,当我在Android 4.0或更高版本中尝试时,只有第一个Asynctask正在运行。
有没有办法在4.0及更高版本中运行所有3个异步任务?
答案 0 :(得分:5)
您可以执行以下操作:
YourAsyncTaskClassObjectName.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
而不是正常的执行:
YourAsyncTaskClassObjectName.execute()
这实际上适用于我的简单非商业应用。现在,我有两个asynctasks的doInBackground方法永远运行(我在每个内部都是(真))。
警告:我不是说这是最好的设计,但这确实有效。答案 1 :(得分:4)
使用Android 4.0,AsyncTask只授予一个后台执行线程,即一次只运行一个。这与FroYo中的行为相同,但在Gingerbread中解除了。因此,您可以运行多个AsyncTasks。因此,最好的方法是序列化AsyncTasks。并行化将导致不可预测的结果。
答案 2 :(得分:1)
您好,您必须编写自己的执行程序。请关注帖子
答案 3 :(得分:0)
这是正确的行为。自Android 4.0以来的AsyncTask,始终如一地执行。