我有一个正常运行在片段中的CountDownTimer。当我尝试旋转手机时,我不会在timerView TextView上显示倒计时。
这是CountDownTimer的代码
private void startTimer(int min, int sec) {
countDownTimer = new CountDownTimer(min, sec) {
@Override
public void onTick(long millisUntilFinished) {
timerView.setText("" + String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
mills = millisUntilFinished;
}
@Override
public void onFinish() {
Toast.makeText(mContext, "TIME OVER", Toast.LENGTH_SHORT).show();
}
}.start();
}
这是onPause回调中的代码
@Override
public void onPause() {
Log.i(TAG, getClass().getSimpleName() + ":onPause()");
super.onPause();
countDownTimer.cancel();
}
这是onResume CallBack中的代码
@Override
public void onResume() {
super.onResume();
if(countDownTimer!=null)
startTimer(mills,sec);
Log.i(TAG, getClass().getSimpleName() + ":onResume()");
}
通过这种方式,我取消onPause事件中的倒计时,并在onResume事件中以剩余毫秒开始新的倒计时。 我注意到使用了一个日志,在onResume之后onTick回调正在工作,但是视图没有更新。我尝试使用invalidate但没有任何好结果。 管理片段中倒数计时器的正确方法是什么?