每次按下按钮时都会创建一个新的计时器实例

时间:2013-07-30 07:30:59

标签: java android time

我正在设计一个递增时钟,它将在按钮点击时执行并更新文本视图的内容,如同经过的时间。但每次按下此按钮时,前一个时钟都不会被清除,新实例将启动并与前一个线程并行运行。我无法理解,因为我如何阻止这种行为。以下是我的代码:

班级变量:

 int repeatCounter = 1;
 CountDownTimer tripTimeCounter;

=============================================== =================================

  private View.OnClickListener but = new View.OnClickListener() {

    public void onClick(View v) {
        if (isOnline() == true) {
            tripTimeCounter = new CountDownTimer(60 * 1000, 1000) {

                @Override
                public void onFinish() {
                    // TODO Auto-generated method stub
                    repeatCounter = repeatCounter + 1;

                    this.start();
                    // startTimeCounter();
                }

                @Override
                public void onTick(long millisUntilFinished) {
                    // TODO Auto-generated method stub
                    timedisplay = (TextView) findViewById(R.id.textView3);
                    timedisplay.setText(formatInterval((repeatCounter * 60)
                            * 1000 - millisUntilFinished));

                }

            }.start();
            tripTimeCounter.start();
        } else {
            Toast.makeText(getApplicationContext(),
                    "Not connected to the internet", Toast.LENGTH_LONG)
                    .show();
        }
    }
};

1 个答案:

答案 0 :(得分:1)

只是略过了这一点,但在谷歌搜索计时器之后,看到cancel方法,其中说:

  

当不再需要计时器时,用户应该调用cancel(),这会释放计时器的线程和其他资源。未明确取消的计时器可能会无限期地保留资源。