我扩展了CountDownTimer类来获得一些自定义的功能。在onTick()万一满足一些条件时,我调用cancel(),期待这将是它的结束,但是onTick()回调获得调用,直到达到倒数。那么如何防止这种情况发生?如何停止/取消android CountDownTimer
17
A
回答
18
CountDownTimer.cancel()方法似乎不起作用。这是另一个没有解决方案的线程Timer does not stop in android。
我建议你使用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);
}});
}
}
15
CountDownTimer也正在为我好,但我认为,如果你的外部调用它的CountDownTimer implemetation的(也就是不把它在onTick)它才会起作用。
在里面调用它也没有奏效。
+3
是的,在onTick中调用它似乎不起作用。我强制调用onFinish并试图取消onFinish中的countdowntimer,并且它工作正常 – Basher51 2014-12-24 08:08:53
0
我试过这个代码片段,因为大多数答案都说你不能取消它的实现中的计时器,因此我试图在onFinish中使用一个处理程序。旧帖子,但如果任何人遇到这有助于。
new Handler().post(new Runnable() {
@Override
public void run() {
timerTextView.setText("00:" + String.format("%02d", counter));
cancel();
}
});
相关问题
- 1. 如何停止CountDownTimer?
- 2. OnPause后如何取消CountDownTimer?
- 3. android COuntDownTimer停止并开始新的
- 4. 如何停止android
- 5. CountDownTimer - ProgressBar停止在90%(Java)
- 6. 取消android countdowntimer on按下回车键
- 7. 如何停止/取消Fabric.js中的requestAnimFrame()
- 8. iPhone如何取消停止performSelector
- 9. 取消令牌如何停止继续?
- 10. Android如何在AsyncTask运行过程中停止/取消AsyncTask?
- 11. 内CountdownTimer弹唱声犯规停止
- 12. 如何停止服务中的Countdowntimer来自活动
- 13. 如何使用Android的CountDownTimer?
- 14. Android Studio如何操作CountDownTimer
- 15. 如何防止Android显示应用程序停止消息
- 16. 如何停止,暂停,取消java中的线程
- 17. android CountDownTimer
- 18. 当我点击取消按钮我想停止倒计时
- 19. android如何停止gps
- 20. 如何停止android服务?
- 21. 取消并重新启动CountDownTimer问题
- 22. 倒数计时器甚至没有停止后取消
- 23. 如何访问我的CountDownTimer以在Java中取消它?
- 24. 如果音频停止,如何取消选中复选框?
- 25. 如何停止/取消从asp.net web表单的取消按钮的查询
- 26. 的Android CountDownTimer
- 27. Android CountDownTimer和AlertDialog
- 28. Android中的CountDownTimer
- 29. android countdowntimer wait
- 30. 如何取消/停止然后重新启动在android的线程
刚刚作出了一个下拉更换为CountDownTimer,你可以从内部onTick取消:https://gist.github.com/737759 – 2010-12-12 01:04:01
@GautierHayoun通过你的方法,我可以在onTick取消,但onTick( )仍然会被调用,不知道为什么 – Deqing 2014-05-18 03:44:47