首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何停止/取消安卓CountDownTimer

如何停止/取消安卓CountDownTimer
EN

Stack Overflow用户
提问于 2010-06-29 14:33:45
回答 3查看 36.7K关注 0票数 17

我正在扩展CountDownTimer类,以获得一些自定义功能.In onTick(),以便在满足某些条件的情况下调用cancel(),期望这将是它的末尾,但是onTick()回调得到调用,直到到达倒计时。那么,如何防止这种情况发生呢?

EN

回答 3

Stack Overflow用户

发布于 2010-07-02 10:37:38

CountDownTimer.cancel()方法似乎不起作用。这是另一个没有解决方案Timer does not stop in android的线程。

我建议你改用计时器。它更灵活,可以随时取消。可能是这样的:

代码语言:javascript
复制
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);
            }});
    }
}
票数 18
EN

Stack Overflow用户

发布于 2010-11-21 19:59:59

CountDownTimer对我来说也工作得很好,但我认为只有在CountDownTimer实现之外调用它才能起作用(即不要在onTick中调用它)。

在内部调用也不起作用。

票数 15
EN

Stack Overflow用户

发布于 2016-11-25 00:04:50

我尝试了这个代码片段,因为大多数答案都说您不能在其实现中取消计时器,因此我尝试在onFinish中使用一个处理程序。以前的帖子,但如果有人遇到这篇文章,它是有帮助的。

代码语言:javascript
复制
new Handler().post(new Runnable() {
            @Override
            public void run() {
                timerTextView.setText("00:" + String.format("%02d", counter));
                cancel();
            }
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3138348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档