节省定时器时间并在 onResume 上恢复
Save timer time and resume on onResume
我是初学者。
我的益智游戏中有一个计时器。但是有一个错误。当用户关闭屏幕时,计时器不会停止。如果用户再次打开屏幕,他会看到游戏结束屏幕,从用户体验的角度来看这并不好。
这是我的计时器代码
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 class 而不是计时器 class。
查看 CountDownTimer。你现在使用的计时器不应该真的那样使用。不幸的是,没有暂停,所以 onTick 保存一个变量以了解计时器当前的时间,然后在暂停时取消计时器。然后在 onresume 中创建一个新时间并将时间设置为您用来跟踪上一个计时器的变量。
http://developer.android.com/reference/android/os/CountDownTimer.html
我是初学者。
我的益智游戏中有一个计时器。但是有一个错误。当用户关闭屏幕时,计时器不会停止。如果用户再次打开屏幕,他会看到游戏结束屏幕,从用户体验的角度来看这并不好。
这是我的计时器代码
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 class 而不是计时器 class。
查看 CountDownTimer。你现在使用的计时器不应该真的那样使用。不幸的是,没有暂停,所以 onTick 保存一个变量以了解计时器当前的时间,然后在暂停时取消计时器。然后在 onresume 中创建一个新时间并将时间设置为您用来跟踪上一个计时器的变量。
http://developer.android.com/reference/android/os/CountDownTimer.html