当从第一个页面跳转到第二个页面,再从第二个页面通过点击按钮执行finish();返回第一个页面,第一个页面最开始有一个timer计时,跳转到第二个页面时用timer.cancel()暂停计时,当从第二个页面用finish();返回第一个页面时,第一个页面的timer怎么继续上次的计时
时间: 2024-03-16 16:46:59 浏览: 42
js计时器(开始计时、停止计时、重置)
5星 · 资源好评率100%
在第一个页面中,可以重写`onResume()`方法,在该方法中重新启动计时器。具体实现如下:
```java
private Timer timer;
private long startTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
// 初始化计时器
timer = new Timer();
startTime = System.currentTimeMillis();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
long currentTime = System.currentTimeMillis();
long elapsedTime = currentTime - startTime;
// 更新UI显示计时结果
updateTimer(elapsedTime);
}
}, 0, 1000);
}
@Override
protected void onResume() {
super.onResume();
// 在该方法中重新启动计时器
startTime = System.currentTimeMillis();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
long currentTime = System.currentTimeMillis();
long elapsedTime = currentTime - startTime;
// 更新UI显示计时结果
updateTimer(elapsedTime);
}
}, 0, 1000);
}
@Override
protected void onPause() {
super.onPause();
// 在该方法中暂停计时器
timer.cancel();
}
private void updateTimer(long elapsedTime) {
// 更新UI显示计时结果
}
```
在`onResume()`方法中,重新启动计时器,将`startTime`设置为当前时间,然后调用`timer.scheduleAtFixedRate()`方法重新注册计时器任务。在`onPause()`方法中,暂停计时器。注意,计时器任务的执行间隔应该与`timer.scheduleAtFixedRate()`方法中的第二个参数一致,以保证计时的准确性。
阅读全文