Reputation: 40503
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
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
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