使用不同的计时器android

时间:2016-08-08 14:42:10

标签: android timer restart

我正在制作一个重复的倒计时器app.I要求倒数计时器以不同的时间重新启动。我在倒数计时器的构造函数中使用全局变量。但问题是它始终从启动时重新启动第一个给定的间隔。

public void chance(final int tota, final int cur, final int exercise,int pass,int flag)
    {
    Log.i("inside value","reached");


         a = new CountDownTimer((tempmilliseconds) * 1000 + 100, 1000) {
             @Override
             public void onTick(long millisUntilFinished) {
                 tempmilliseconds = (int) millisUntilFinished / 1000;
                 Log.i("inside value",Integer.toString(tempmilliseconds));
                 updatetimer(millisUntilFinished);
             }

             @Override
             public void onFinish() {
                 mtext.setText("0:00");
                 cancel();

                 final Handler handler = new Handler();
                 handler.postDelayed(new Runnable() {
                     @Override
                     public void run() {
                         currentcompleted++;
                         if (on == 0) {
                             on = 1;
                             int exercis = MainActivity.restmint * 60 + MainActivity.restsec;
                             tempmilliseconds=exercis;
                             chance(tota, curr + 1, exercis, 0, 0);
                         } else {
                             on = 0;

                             int exercis = MainActivity.exermint * 60 + MainActivity.exersec;
                             tempmilliseconds=exercis;

                             chance(tota, curr + 1, exercis, 0, 0);
                         }
                     }
                 }, 1000);

             }
         };
         a.start();
     }

以下是恢复操作的代码:

public void resume(View view) {
        Button mytext=(Button) findViewById(R.id.resume);
        if( mytext.getText().toString()=="Pause") {
            mytext.setText("Play");
             a.cancel();
        }
        else {
        mytext.setText("Pause");
        Log.i("Value of temp",Integer.toString(tempmilliseconds));
          a.start();
        }
} 

计时器正在停止,但在恢复功能启动时,会以原始时间重新启动,而不是由tempmillisecond指定。注意tempmilliseconds每秒更新一次。 任何帮助/片段/建议表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

在任何情况下,CountDownTimer都不会让自己受到干扰。它将记住它诞生的时间直到有人杀死它。

如果您查看其文档,您会发现它直接继承自Object类,并且只有四种方法:start()cancel()onFinish()(摘要)和onTick()(摘要)。几乎就是这样。所以,你基本上别无选择,只能拨打cancel(),然后重新初始化计时器。或者,您可以扩展CountDownTimer类并将其封装在引擎盖下。

在任何一种情况下,取消广告重新初始化的成本可能会变得乏味。