【发布时间】:2016-12-30 14:21:45
【问题描述】:
我正在编写一个锻炼应用程序,并尝试在 Train 活动中实现一个休息计时器。 CountDownTimer 位于Train 内,当用户按下开始按钮时调用。
public CountDownTimer createTimer(long timerDuration) {
Log.d("new timer duration:", "value: " + timerDuration);
return new CountDownTimer(timerDuration, 1000) {
@Override
public void onTick(long millisUntilFinished) {
int progress = (int) (millisUntilFinished / 1000);
secondsLeftOnTimer = progress; // update variable for rest of app to access
// Update the output text
breakTimerOutput.setText(secondsToString(progress));
}
@Override
public void onFinish() { // Play a beep on timer finish
breakTimerOutput.setText(secondsToString(timerDurationSeconds));
playAlertSound(); // TODO: Fix the delay before playing beep.
}
}.start();
}
只要用户停留在Train 活动中,计时器就会工作。如果切换到另一个活动,计时器会继续在后台运行(仍然会发出哔声),这就是我想要的。但是,如果您返回到 Train 活动,breakTimerOutput TextView 将不再由 onTick 更新。
当用户重新进入Train 活动时,我如何将breakTimerOutput“重新连接”到onTick?
【问题讨论】:
-
您是否考虑过您的 Train Activity 的 onPause 和 onResume?
-
我没有,但这是一个想法。离开活动时我基本上会存储计时器吗?我是 Android 编程新手,所以我对通常如何处理这样的事情有点生疏。
标签: java android android-activity countdowntimer