Android - AsyncTask

Card Puncher Data Processing

About

The class AsyncTask simplify background thread creation.

  • The AsyncTask is not tied to the activity lifecycle. The virtual machine will hold the AsyncTask alive as long as the AsyncTask is running even if the onDestroy method is called. When rotating the device, the activity is destroyed and a new AsyncTask is created. There is then two tasks performing the same task.
  • The app has also to be in the foreground to instantiate the AsyncTask in the first place.

It's then not the best pattern for a very long background operation. See Android - Service (background operation without UI interaction)

Disadvantage

Note that when you start an AsyncTask, it is tied to the activity you start it in. When the activity is destroyed (which happens whenever the phone is rotated), the AsyncTask you started will refer to the destroyed activity and not the newly created activity. This is one of the reasons why

using AsyncTask for a longer running task is dangerous.

See loaders instead

Implementation

There are four important methods to override:

  • onPreExecute - This method is run on the UI before the task starts and is responsible for any setup that needs to be done.
  • doInBackground - This is the code for the actual task you want done off the main thread. It will be run on a background thread and not disrupt the UI.
  • onProgressUpdate - This is a method that is run on the UI thread and is meant for showing the progress of a task, such as animating a loading bar.
  • onPostExecute - This is a method that is run on the UI after the task is finished.





Discover More
Card Puncher Data Processing
Android - Loader (Asynchronously load data)

Loaders provide a framework for the asynchronous loading of data. They are registered by id in the loaderManager. The loader Id has to be unique for all loader used in the activity. android/support/v4/content/LoaderLoader...
Card Puncher Data Processing
Android - Thread (Background Operations)

Main Thread = UI Thread = All user input and output = Activity or fragment All long operation must not be done on the Main Thread. The class AsyncTask simplify background thread creation coupled to...



Share this page:
Follow us:
Task Runner