我为我的许可证项目工作,其中一部分包含在一个 android 客户端中。一切都很好,直到我将手机升级到 Android 4.0.4。
所以,我有一个 AsyncTask。它看起来像这样:
public class TestTask extends AsyncTask<Context, Integer, Long> {
@Override
protected Long doInBackground(Context... params) {
for (int i = 0; i < 10; i++) {
System.out.println("nothing-" + i);
if (i == 5) {
TestTask2 testTask2 = new TestTask2();
testTask2.execute(null);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
}
此任务等待 5 秒,然后它会调用另一个异步任务 TestTask2。
public class TestTask2 extends AsyncTask<Context, Integer, Long> {
@Override
protected Long doInBackground(Context... params) {
System.out.println("task 2 in action");
return null;
}
}
在 android 4.0.3 或更低版本中,输出为:
无-0 无-1 无-2 无-3 无-4 无-5
任务 2 进行中
无 6 无 7 无 8 无 9
当我升级到 4.0.4 时,第二个任务直到第一个任务完成后才开始。
无-0 无-1 无-2 无-3 无-4 无-5 无-6 无-7 无-8 无-9
任务2 在行动
android 4.0.4 中是否有任何线程策略或其他?可能是什么问题呢?