Timer Recurring tasks are scheduled with either a fixed period or a fixed rate:
• With the default fixed-period execution, each successive run of a task is scheduled relative to the start time of the previous run, so two runs are never fired closer together in time than the specified period.
• With fixed-rate execution, the start time of each successive run of a task is scheduled without regard for when the previous run took place. This may result in a series of bunched-up runs (one launched immediately after another) if delays prevent the timer from starting tasks on time.
Handler
- to schedule messages and runnables to be executed as some point in the future; and
- to enqueue an action to be performed on a different thread than your own.
Handler Implementation
- How to create repetitive task using Handler
Handler mHandler;
public void useHandler() {
mHandler = new Handler();
mHandler.postDelayed(mRunnable, 1000);
}
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
Log.e("Handlers", "Calls");
/** Do something **/
mHandler.postDelayed(mRunnable, 1000);
}
};
- How to remove pending execution from Handler
mHandler.removeCallbacks(mRunnable);
- How to schedule it again
mHandler.postDelayed(mRunnable, 1000);
- Where to perform Task
Runnable works under UI thread so you can update UserInterface in Handler respective Runnable
Timer Implementation
- How to create repetitive task using Timer
public void useTimer() {
Timer mTimer = new Timer();
mTimer.cancel();
mTimer.schedule(new TimerTask() {
@Override
public void run() {
Log.e("Timer", "Calls");
}
}, 1000, 1000);
}
- How to remove pending execution from Timer
mTimer.cancel(); will cancel all the schedule task.
- How to schedule it again
You can not reschedule Timer again. So you to create object of timer again if you are trying to reschedule its task.
Comparison Handler VS Timer
- While rescheduling Handler is very easy, you can not reschedule Timer
- In Handler you can attach to any Runnable but Timer schedule for only one TimerTask
- TimerTask is purely background task so you can not update UserInterface, but that's not true for Handler's Runnables
- Timer tends to leak more memory compare to Handler see the graph of object retains by timer and Handler. It will increase rapidly for Timer if you are creating and scheduling new task.
Handler Memory Graph |
Timer Memory Graph |
No comments:
Post a Comment
Feedback always help in improvement. If you have any query suggestion feel free to comment and Keep visiting my blog to encourage me to blogging