私は自分のライセンス プロジェクトで働いており、一部は Android クライアントで構成されています。携帯電話を Android 4.0.4 にアップグレードするまでは、すべて問題ありませんでした。
だから、私は 1 つの 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;
}
}
このタスクは、別の非同期タスク TestTask2 を呼び出す前に 5 秒間待機します。
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 にアップグレードすると、最初のタスクが完了するまで 2 番目のタスクが開始されません。
何もない0 何もない1 何もない2 何もない3 何もない4 何もない5 何もない6 何もない7 何もない8 何も9
タスク2の実行中
Android 4.0.4 などにスレッド ポリシーはありますか? 何が問題なのですか?