你如何从同一个按钮暂停/恢复MyCounter?

时间:2012-07-19 16:26:50

标签: java android timer countdown countdowntimer

我对Android很陌生(我已经在一个月内开始编程了,感觉好像我在大部分时间里一直在与这个问题作斗争!)

我正在尝试创建一个计时器应用。此时有两个按钮启动计时器(如果再次按下它会将时间重置为0)和一个停止按钮暂停计时器(如果再次按下则不执行任何操作)。

我正在尝试使这些按钮执行以下操作:

  • 按钮1 =如果按下一次启动计时器。如果在计时器运行时按下它,则暂停,如果在计时器暂停时按下它,则恢复
  • 按钮2 =如果按下它会重新启动计时器

我的java代码如下:

    //within on create
    start = (Button)findViewById(R.id.start);

    stop = (Button)findViewById(R.id.stop);
    tv  = (TextView)findViewById(R.id.tv);
    tv.setText("30"); // starting from 30.

    final MyCounter timer = new MyCounter(30000,1000);
    start.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.start();
        }
    });
    stop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.cancel();
        }
    });
}

public class MyCounter extends CountDownTimer{

    public MyCounter(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }

    @Override
    public void onFinish() {
        System.out.println("Timer Completed.");
        tv.setText("Timer Completed.");
    }

    @Override
    public void onTick(long millisUntilFinished  ) {
        tv.setText((millisUntilFinished/1000 + ":" +  millisUntilFinished/100));
        System.out.println("Timer  : " + (millisUntilFinished/1000));
    }
}

我想我将不得不保存和恢复实例状态以暂停和恢复计时器,我将不得不使用布尔值来更改button1('start')的onclicklist,即。如果计时器正在运行并且单击了button1,请执行此操作。

1 个答案:

答案 0 :(得分:0)

在onTick方法中,将剩余的milliSeconds记录到变量中。然后,当您在第二次按下按钮时,使用onTick()方法中记录的剩余时间创建一个新的CountDownTimer。