さまざまなヨガのポーズを 60 秒間表示するアプリをやっています。カウントダウンタイマーを思い通りに機能させようと、髪を伸ばしてきました。タイマーを一時停止して、15 秒後に自動的に再起動できるようにする必要があります。一時停止がなかったため、Android の CountDownTimer は機能しませんでした。書き直した Android CountDownTimer と従来のバージョン (Android CountDownTimer) の 2 つの異なるバージョンを試しましたが、ハンドラーを使用しているため、すべて同じバグがあるようです。
私はこのバージョンを試しました: http://www.java2s.com/Open-Source/Android/Timer/multitimer-android/com/cycleindex/multitimer/CountDownTimerWithPause.java.htm
私はこのバージョンを試しました: Android: CountDownTimer は最後の onTick() をスキップします! - onFinish メソッドを追加しました。
onFinish メソッドで 15 秒間 Thread.sleep を実行しようとしていますが、Thread.sleep モードに移行する前に最後の 1 秒を過ぎても UI が更新されません。次のコードでは、TextView は、Thread.sleep 呼び出しの後まで空の文字列に設定されるように更新されません。
cdt = new CountDownTimerWithPause(60000,1000,true) {
@Override
public void onTick(long millisUntiFinished) {
tvClock.setText("Remaining:" + millisUntiFinished/1000);
}
@Override
public void onFinish() {
tvClock.setText("");
bell.start();
if (bAutoPlayIsOn) {
tvClock.setText("waiting for next pose...");
try {
//15 second pauses between poses
Thread.sleep(15000);
//start over
listener.onForwardItemSelected();
ResetClocktoMaxTime(60000);
resume();
} catch (InterruptedException e) {
Log.d("Sleep Interrupted", e.toString());
e.printStackTrace();
}
catch (Exception e) {
Log.d("Timer", e.toString());
}
}
else {
tvClock.setText("Done");
btnStart.setText("Start ");
bClockIsTicking = false;
btnStart.setCompoundDrawablesWithIntrinsicBounds(null, playBtn, null, null);
}
}
};
これを行う方法(15秒後に再起動する)のアイデアはありますか?