每当我按下一个按钮,就会创建一个新的计时器实例



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

类级变量:

 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();
        }
    }
};

只浏览了一下,但在谷歌上搜索Timer后,看到了cancel方法,上面写着:

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

相关内容

最新更新