如何停止/取消android countDownTimer

我在扩展CountDownTimer类来获取一些自定义的function。在onTick()万一满足一些条件的情况下,我调用cancel(),期待这将是它的结束,但onTick()callback获取调用,直到计数已经达到了。 那么如何防止这种情况发生呢?

Solutions Collecting From Web of "如何停止/取消android countDownTimer"

CountDownTimer.cancel()方法似乎不工作。 这里是另一个没有解决scheme的线程计时器不会在android中停止 。

我会build议你使用Timer来代替。 这是更灵活,可以随时取消。 这可能是这样的:

public class MainActivity extends Activity { TextView mTextField; long elapsed; final static long INTERVAL=1000; final static long TIMEOUT=5000; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextField=(TextView)findViewById(R.id.textview1); TimerTask task=new TimerTask(){ @Override public void run() { elapsed+=INTERVAL; if(elapsed>=TIMEOUT){ this.cancel(); displayText("finished"); return; } //if(some other conditions) // this.cancel(); displayText("seconds elapsed: " + elapsed / 1000); } }; Timer timer = new Timer(); timer.scheduleAtFixedRate(task, INTERVAL, INTERVAL); } private void displayText(final String text){ this.runOnUiThread(new Runnable(){ @Override public void run() { mTextField.setText(text); }}); } } 

CountDownTimer也适用于我,但我认为它只能在CountDownTimer实现的外部调用(即不在onTick中调用它)时才有效。

调用它也没有奏效。

我试过这个代码片段,因为大多数答案都说你不能取消它的实现中的计时器,因此我试图在onFinish中使用一个处理程序。 旧post,但如果有人遇到这个有用的。

 new Handler().post(new Runnable() { @Override public void run() { timerTextView.setText("00:" + String.format("%02d", counter)); cancel(); } });