Scheduling a Timer in Android

When it comes to scheduling a timer in Android, you have a few choices, some better than the others.

Using Java Timer

Java’s built-in java.util.Timer works fine in Android. However, the TimerTask is fired in a secondary thread. That means, you can not change the GUI from the task.

The example below fires a timer in 2 seconds.

Timer timer = new Timer();

timer.schedule(new TimerTask() {
    public void run() {
        //Called in a secondary thread.
        //GUI update not allowed.
    }
}, 2000);

Using a Handler

If you intend to update the UI when the timer fires, use the Handler API. A handler executes a Runnable in the same thread that the handler was created in.

In the example below, we fire a timer in 2 seconds.

Handler handler = new Handler();

handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        //Called in the same thread as where the handler was created.
        //If the handler was created in main thread, then
        //we can safely update the GUI from here.
    }
}, 2000);

If we create the handler from the main thread, we can update the GUI from the run() method. This is irrespective of what thread calls the postDelayed() method.

Advertisements

One thought on “Scheduling a Timer in Android

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s