一定の時間が経過するとUIを更新する必要があります。そのためには、タイマースケジュールを作成し、その中にrunOnUiThreadを呼び出します。runOnUiThreadが完了するまで待機するタイマータスクを作成する方法
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("1");
try {
System.out.println("2");
System.out.println("3");
runOnUiThread(new Runnable() {
public void run() {
System.out.println("4");
System.out.println("5");
System.out.println("6");
System.out.println("7");
}
});
System.out.println("8");
} catch (Exception e) {
e.printStackTrace();
}
}
}, delay, period);
System.out.println("9");
私は「3」に達した後、タイマースレッドから「8」ジャンプし、その後UIスレッドが「4」から実行されること。問題が生じています UIスレッドが "7"で作業を完了するまで待機するタイマースレッドを作成し、 "8"に移動する必要があります。
サンプル出力
01-05 00:30:16.308: I/System.out(1394): 1
01-05 00:30:16.308: I/System.out(1394): 2
01-05 00:30:16.308: I/System.out(1394): 3
01-05 00:30:16.308: I/System.out(1394): 8
01-05 00:30:16.308: I/System.out(1394): 4
01-05 00:30:16.308: I/System.out(1394): 5
01-05 00:30:16.308: I/System.out(1394): 6
01-05 00:30:16.308: I/System.out(1394): 7
01-05 00:30:17.307: I/System.out(1394): 1
01-05 00:30:17.307: I/System.out(1394): 2
01-05 00:30:17.307: I/System.out(1394): 3
01-05 00:30:17.307: I/System.out(1394): 8
01-05 00:30:17.307: I/System.out(1394): 4
01-05 00:30:17.323: I/System.out(1394): 5
01-05 00:30:17.323: I/System.out(1394): 6
01-05 00:30:17.323: I/System.out(1394): 7
待機の前に通知が発生する可能性が非常に低い可能性があります。むしろここではカウントダウンを使用したいと思います。 (または、syncブロック内のrunonuithread呼び出しを含めて、待機前に通知が呼び出されていないことを確認する) – njzk2