onTick()メソッドでCountDownTimer内のフィールドを更新します。しかし、フィールドは常に0です。問題の原因を知っていますか?CountDownTimer onTick()がクラス
public class Counter {
private static final long SECOND_MS = 1000;
private static final long MINUTE_MS = 60 * SECOND_MS;
private static final long TOTAL_TIME_MS = 5 * MINUTE_MS;
public long mSecondsSinceLastPick;
public long getSecondsSinceLastSchedulerStarted() {
Timber.d(String.format("get mSecondsSinceLastPick = %s", mSecondsSinceLastPick));
return mSecondsSinceLastPick;
}
private CountDownTimer mCountDownTimer = new CountDownTimer(TOTAL_TIME_MS, SECOND_MS) {
public void onTick(long millisUntilFinished) {
Timber.d(String.format("onTick mSecondsSinceLastPick = %s", mSecondsSinceLastPick));
mSecondsSinceLastPick = (TOTAL_TIME_MS - millisUntilFinished)/SECOND_MS;
}
public void onFinish() {
}
};
public void startCounting() {
mCountDownTimer.start();
}
}
[EDITED]は ログ出力が
06-19 15:42:57.293 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 4
06-19 15:42:58.293 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 5
06-19 15:42:59.299 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 6
06-19 15:43:00.320 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 7
06-19 15:43:01.321 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 8
06-19 15:43:01.507 9994-9994/com.nav.survey D/GroundTruthReminderManager:22: get mSecondsSinceLastPick = 0
06-19 15:43:02.322 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 9
06-19 15:43:03.324 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 10
06-19 15:43:04.325 9994-9994/com.nav.survey D/GroundTruthReminderManager:38: onTick mSecondsSinceLastPick = 11
私は始めましたが、このコードをコピーするのを忘れました。一般的に言えば、onTick()内にログオンすると、すべてが正しく表示されます。ゲッターでフィールドをログすると、常に0になります。 – qbait
いつ取得しますか?あなたは一度だけそれを手に入れますか? –
カウント中にゲッターを何回か呼びます。ログを追加しました。 – qbait