0

毎秒 != 前の秒に新しい値がポストされ、値が <1 に達するとカウントダウンが終了します。

System.currentTimeMillis() で開始時間を記録し、そこから残りのカウントダウンを計算します。これはすべて、何度も再実行される runnable で行われます。

残りの分と秒を入力するときは、次の式を使用します。

secondsLeft=    (int) ((time / 1000) % 60);
minutesLeft =  (int) (time / (60*1000));

私が得ている問題は、secondsLeft が <1 に達するとタイマーが終了することです。しかし、純粋なミリ秒を使用するため、最も近い秒に丸められない AlarmManager を介して設定された私のアラームは、タイマーが終了するよりも少し早く、または遅く実行されます。

それらを同期させるにはどうすればよいですか?

追加情報:

カウントダウンが終了すると、電話を振動させます。したがって、タイマーを 0 に到達させることはできず、電話は遅かれ早かれ振動します。

電話が長すぎるとオフにならないため、振動にはAlarmManagerを使用します(フォアグラウンドで実行されているサービスはほとんどの場合機能しますが、100%ではありません)。

4

1 に答える 1