Tips & Tricks: AsyncTask.

Hi Android developers,

This week in tips and tricks: AsyncTask.

A AsyncTask is a class that provides you an easy interface to create a new thread. It is recommended to use it by background tasks, like downloading through a internet connection.
From Honeycomb (SDK API level 11) it’s even mandatory to use Asynctask’s for internet connection downloads and if it’s not done it will force close the application. So it will be also for Ice Cream Sandwich.
Besides it’s mandatory it’s also really handy. You will take pressure from the UI Thread and it will be processed faster and parallel to the UI Thread.

You have to start with:

private class DownloadFilesTask extends AsyncTask<void, void, void>

There are five methods to implement which are:
onPreExecute:
The first method called in the AsyncTask, called on the UI thread. In this method you usually prepare the progressbar, if needed.

@Override
protected void onPreExecute() {
    super.onPreExecute();
    showDialog(DIALOG_DOWNLOAD_PROGRESS);
}

doInBackground:
This is the method where is all the action. This method executes the time consuming tasks and publish the task progress, executed in background thread.

@Override
protected String doInBackground(String... params) {
    // perform Long time consuming operation
    return null;
}

onProgressUpdate
Method that updates the progress of the AsyncTask, run on the UI thread. This is where you update the progressbar.

@Override
protected void onProgressUpdate(String... progress) {
    mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}

onPostExecute
The final method that gets called after doInBackground finishes, here we can update the UI with the results of the AsyncTask, like removing the progressbar.

@Override
protected void onPostExecute(String unused) {
    try {
        dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
    } catch (Exception e){
        Log.e("APP_NAME","Unknown exception caught: " + e.getMessage());
    }
}

onCancelled
This method gets called if the AsyncTask.cancel() methods is called, terminating the execution of the AsyncTask.

@Override
protected void onCancelled() {
    dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}

To execute it just use:

new DownloadFilesTask().execute(param1, param2);

As you can see the AsyncTask is easy to implement and the methods are really easy to use and understand. It is highly recommended to use AsyncTask for task that doesn’t have to update the UI Thread.

We use AsyncTask in Let Me Android That For You and Perka’s File Stash.

For more information: http://developer.android.com/reference/android/os/AsyncTask.html

Regards,
PullesSon – Android