gpt4 book ai didi

java - 节省定时器时间并在 onResume 上恢复

转载 作者:行者123 更新时间:2023-11-30 02:13:35 25 4
gpt4 key购买 nike

我是初学者。

我的益智游戏中有一个计时器。但是有一个错误。当用户关闭屏幕时,计时器不会停止。如果用户再次打开屏幕,他会看到游戏结束屏幕,从用户体验的角度来看这并不好。

这是我的定时器代码

private void initializeProgressBar() {
//initialize progressbar

progress = ApplicationConstants.GAME_TIME;

mProgress = (ProgressBarDetermininate) findViewById(R.id.progressDeterminate);
mProgress.setMax(progress);
mProgress.setProgress(progress );
timer = new Timer();
progressBarUpdateTask = new ProgressBarUpdateTask();
timer.schedule(progressBarUpdateTask, 20, 20);

}

class ProgressBarUpdateTask extends TimerTask {
@Override
public void run() {
runOnUiThread(new Runnable(){
@Override
public void run() {
progress-=1;
if(progress==0)
{
TimeOver();
}
mProgress.setProgress(progress);
}

});
}

@Override
protected void onResume() {
super.onResume();

}

@Override
protected void onPause() {
super.onPause();
this.timer.cancel();

}

我不知道如何解决这个 onResume,因为现在计时器在用户关闭屏幕时停止,但在用户打开屏幕时不会恢复。

最佳答案

然后你应该在你的 onPause() 方法中暂停计时器而不是取消它,在 onResume() 方法中你可以用剩下的秒数重新启动计时器, 在屏幕关闭之前。有关 Activity 生命周期的更多信息,请查看 Activity Lifecycle .

但我认为您真正需要的是 CountDownTimer 类而不是 Timer 类。

关于java - 节省定时器时间并在 onResume 上恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com