timer = new CountDownTimer(Long.MAX_VALUE, 1000),当跳转页面后timer暂停计时,当回到该页面时继续计时
时间: 2024-03-16 22:45:44 浏览: 60
Android 倒计时——Timer和CountDownTimer的使用,实现启动,暂停,继续,重复,重设时长以及启动service后台倒计时
要实现这个功能,你可以在页面跳转的时候记录下当前的计时器时间,然后在回到页面的时候恢复计时器,并将计时器时间设置为之前记录的时间。
具体的实现方法如下:
1. 在页面跳转之前,记录下当前计时器的时间,可以使用 onSaveInstanceState 方法将时间保存到 Bundle 中。
2. 在回到页面的时候,先从 Bundle 中恢复之前保存的时间,然后重新创建一个 CountDownTimer 对象,并将时间设置为之前保存的时间。
代码示例:
```
public class MainActivity extends AppCompatActivity {
private static final String KEY_TIMER_TIME = "timer_time";
private CountDownTimer timer;
private long timerTime = Long.MAX_VALUE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
timerTime = savedInstanceState.getLong(KEY_TIMER_TIME);
}
timer = new CountDownTimer(timerTime, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// 计时器每秒回调一次
}
@Override
public void onFinish() {
// 计时器完成后回调
}
};
timer.start();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong(KEY_TIMER_TIME, timer != null ? timer.getTime() : Long.MAX_VALUE);
}
@Override
protected void onResume() {
super.onResume();
if (timer != null) {
timer.cancel();
timer = new CountDownTimer(timerTime, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// 计时器每秒回调一次
}
@Override
public void onFinish() {
// 计时器完成后回调
}
};
timer.start();
}
}
}
```
在 onSaveInstanceState 方法中,我们将计时器的时间保存到 Bundle 中。在 onResume 方法中,我们从 Bundle 中恢复时间,并重新创建一个 CountDownTimer 对象,并将时间设置为之前保存的时间。这样就可以保证在页面跳转后,计时器暂停计时,当回到该页面时继续计时。
阅读全文