0

我目前有一个点击游戏,当用户按下主页按钮时,它利用 on pause、stop 和 onresume 方法,计时器被“取消”并且剩余的时间被保存很长时间,然后在 onresume 中创建一个新的计时器与时间剩余 - 很好,但是现在当计时器完成完整运行并且用户开始启动新活动,即排行榜/设置等。并返回 onResume 再次触发并且剩余 1 秒的倒计时再次开始,有没有办法从某种活动或类似活动返回时停止它被解雇?

在下面你会看到一个我尝试过但徒劳无功的工作,非常混乱且有效,但我的想法已经不多了!

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

        if (timeLeft < 1000) {

        } else {
            if (timeLeft <= 0) {

            } else {

                if (newActivityOpened == true) {

                } else {
                    if (isTimerRunning == true) {
                        startCountDownTimer();
                    }

                }

            }
        }
    }

原谅所有多余的 if 语句,我一直在添加它们,希望能让一些东西点击哈哈。

4

3 回答 3

1

当然,您需要做的就是以下...

// Code where you start the new Activity...
stopCountDownTimer();
if (timeLeft < 1000)
    isTimerRunning = false;
startActivity(intent);

然后在onResume()你做...

if (isTimerRunning)
    startCountDownTimer();
于 2012-04-16T18:01:43.127 回答
0

为什么不在您的活动中使用简单的全局布尔值?每当您开始某些活动时,将其设置为 true。在您的 onResume() 检查布尔值。如果您看到它设置为 true,则不要启动倒数计时器。否则启动它。

protected void onResume() { 
    if( !newActivityOpened){
        if ( isTimerRunning ) {
            startCountDownTimer();
        }
    }
    super.onResume();
}

不确定我是否正确解决了问题,但这应该可以正常工作。

于 2012-04-16T17:38:25.743 回答
0

只需创建一个标志,指示您当前是否正在计时/倒计时。一旦你开始你的定时器设置timing = true;一旦它完成timing = false;

然后在您的 onResume 中,您知道您的计时器是否已经开始运行。

protected void onResume() {
    if (timing)
    {
        //  create your timer here
    }
    else{
        // do nothing?
    }
}
于 2012-04-16T17:50:17.260 回答