1) Handler controls the execution of tasks defined by Runnable
2) > Manual stopping : handler.removeCallbacks(runnable)
final Handler handler = new Handler();
//REPETETION TASK
final Runnable run = new Runnable() {
@Override
public void run() {
Log.i("Runnable has run!","Repeats every sec");
//repeat this task devery 1s
handler.postDelayed(this,1000);
}
};
handler.post(run);
// To stop this runnable
//handler.removeCallbacks(run);
//DELAY TASK : run this task after 3s
final Runnable run2 = new Runnable() {
@Override
public void run() {
Log.i("Delay task","This task is delayed");
}
};
handler.postDelayed(run2,3000);
1) Timer is a general java utils, unlike Handler and Runnable which are part of android.os
2) Stopping : timer.cancel()
//TIMER from java utils
//Start a task after 5 seconds for every 1s
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Log.i("Another way to time","Java utils Timer");
}
},5000,1000);
//To stop
//timer.cancel()
Repeats a task at set interval until a max time
//COUNT DOWN TIMER : repeat a task in an interval until certain time
// every 2s for 10s
// When we dont store this in new variable, this object is destroyed after count down is finished
new CountDownTimer(10000,2000) {
@Override
public void onTick(long millisUntilFinished) {
//executed at every interval
Log.i("Count down",String.valueOf(millisUntilFinished/1000));
}
@Override
public void onFinish() {
//executed on finish
Log.i("Count down","Finished");
// stopping an infinite runnable
handler.removeCallbacks(run);
//stop timer
timer.cancel();
}
}.start();
Egg timer