启动新活动后未重置的Android计时器

时间:2014-06-26 14:30:39

标签: android timer

我要求从一个活动(例如Apple)开始计时器自动开始运行20秒,一旦计时器结束,它就会结束另一个活动(例如橙色)。

但Apple中有一个按钮允许我点击另一个Apple活动(基本上是重复),并且计时器会在新的Apple中再次重置。

计时器的代码如下

       new CountDownTimer(20000, 1000) {
       public void onTick(long millisUntilFinished) {

    public void onFinish() {
        Intent i = new Intent(Apple.this, Orange.class);
        Log.i(LG, "From Apple to Orange");

        startActivity(i);   
    }
 }.start();

如果Apple被激活一次并退出橙色,则没有问题。

但如果一个Apple(1)活动被激活,然后是另一个Apple(2)活动,那么Apple(1)的计时器似乎不会停止。例如,如果Apple(1)退出Apple(1),Apple(1)在10秒时退出Apple(2),则在退出Orange之前,它仅计为10秒(不是完整的20秒)。 / p>

我哪里出错了?

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您没有保存Apple的实例状态。你有一些选择:

1)您可以将计时器从UI线程移开:

Resuming CountdownTimer after rotation

2)当Apple调用Apple然后在第二个实例中从该值恢复计时器时,只保存millisUntilFinished的实例可能更简单。这应该有帮助(你使用你的活动的onPause和onResume方法):

Countdown timer with pause and resume