Vinayak Bevinakatti
Vinayak Bevinakatti

Reputation: 40503

CountDownTimer.cancel() is not working in Android

CountDownTimer.cancel() is not working in the below code:

myTimer = new CountDownTimer(10000, 1000) {
    public void onFinish() {
    }
    @Override
    public void onTick(long millisUntilFinished) {
        if(null != myObject){
            myTimer.cancel();
        }
    }
}.start();

In the above code I have started a CountDownTimer which check if the object is not null and cancels the Timer accordingly. The object is set by some listener at any point of time. Please refer and suggest. Am I doing the right thing here?

Solution By Gautier Hayoun :

Just made a drop-in replacement for CountDownTimer that you can cancel from within onTick : Github link– Gautier Hayoun Dec 12 '10 at 1:04

Upvotes: 9

Views: 8911

Answers (2)

Sunil Kumar Sahoo
Sunil Kumar Sahoo

Reputation: 53657

Instead of CountDownTimer use TimerTask

final static long INTERVAL=1000;
final static long TIMEOUT=10000;


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

Upvotes: 5

Vinayak Bevinakatti
Vinayak Bevinakatti

Reputation: 40503

Solution By Gautier Hayoun :

Just made a drop-in replacement for CountDownTimer that you can cancel from within onTick : Github link– Gautier Hayoun Dec 12 '10 at 1:04

Upvotes: 9

Related Questions