我想使用倒数计时器,但有问题。如果我启动它然后按下后退按钮(将生命周期更改为onStop)并返回活动 - 我无法在TextView中看到计时器值。但是在Logcat中我看到计时器工作。
问题:如何在返回活动后更新TextView(onResume)
更新。 虽然我不会关闭活动,但这段代码可以正常运行 - 好吧。但是,如果按下后退按钮,TextView中没有值。 计时器方法代码(此方法从onCreate调用):
timer = new CountDownTimer(rest + 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
secondsUntilFinish = Math.round(millisUntilFinished / 1000);
String minutes = String.format("%02d",TimeUnit.SECONDS.toMinutes(secondsUntilFinish));
String seconds = String.format("%02d",TimeUnit.SECONDS.toSeconds(secondsUntilFinish) - TimeUnit.MINUTES.toSeconds(TimeUnit.SECONDS.toMinutes(secondsUntilFinish)));
tvRoutineTimer.setText(getResources().getString(R.string.exercise_rest_timer, minutes, seconds));
Log.d(LOG_TAG, "onTick = " + getResources().getString(R.string.exercise_rest_timer, minutes, seconds));
}
@Override
public void onFinish() {
tvRoutineProgress.setText(getString(R.string.routine_progress, currentStep, totalSteps));
tvRoutineTimer.setText(getString(R.string.exercise_rest_timer, "00", "00"));
notificationAfterRest();
btnExerciseDone.setText(getString(R.string.button_exercise_done));
btnExerciseDone.setEnabled(true);
tvExercisePlaceholder.setText(getString(R.string.exercise_current_title));
}
}.start();
答案 0 :(得分:-1)
您需要从UI线程更新TextView
。像这样更新你的TextView
:
runOnUiThread(new Runnable() {
@Override
public void run() {
tvRoutineTimer.setText(getResources().getString(R.string.exercise_rest_timer, minutes, seconds));
});
将runOnUiThread
放在onTick()