0

I need to use background operation in android,so i need to know what are the differences between handler and AsyncTasks in Android?

Komali perera
  • 101
  • 1
  • 5
  • AsyncTasks basically used to perform time consuming operations such as fetching data from web.Handler used to communicate between asyntask & ui ..to update UI – Prachi Jan 20 '15 at 06:26
  • Take a look at this. Please search before asking questions. http://stackoverflow.com/questions/2523459/handler-vs-asynctask – Tommy Lee Jan 20 '15 at 06:27

2 Answers2

1

Handler and AsyncTasks are way to implement multithreading in android with UI/Event Thread. Handler is available since Android API level 1 & AsyncTask is available since API level 3.

What is Handler?

  1. Handler allows to add messages to the thread which creates it and It also enables you to schedule some runnable to execute at some time in future.
  2. The Handler is associated with the application’s main thread. It handles and schedules messages and runnables sent from background threads to the app main thread.
  3. If you are doing multiple repeated tasks, for example downloading multiple images which are to be displayed in ImageViews (like downloading thumbnails) upon download, use a task queue with Handler.
  4. There are two main uses for a Handler. First is to schedule messages and runnables to be executed as some point in the future; and second Is to enqueue an action to be performed on a different thread than your own. Scheduling messages is accomplished with the the methods like post(Runnable), postAtTime(Runnable, long), postDelayed(Runnable, long), sendEmptyMessage(int), sendMessage(Message), sendMessageAtTime(Message, long), and sendMessageDelayed(Message, long) methods.
  5. When a process is created for your application, its main thread is dedicated to running a message queue that takes care of managing the top-level application objects (activities, broadcast receivers, etc) and any windows they create.
  6. You can create your own threads, and communicate back with the main application thread through a Handler.

What is AsyncTask ?

  1. Async task enables you to implement multi threading without get hands dirty into threads. AsyncTask enables proper and easy use methods that allows performing background operations and passing the results back to the UI thread.

  2. If you are doing something isolated related to UI, for example downloading data to present in a list, go ahead and use AsyncTask. AsyncTasks should ideally be used for short operations (a few seconds at the most.)

  3. An asynchronous task is defined by 3 generic types, called Params, Progress and Result, and 4 steps, called onPreExecute, doInBackground, onProgressUpdate and onPostExecute.

  4. In onPreExecute you can define code, which need to be executed before background processing starts.

  5. doInBackground have code which needs to be executed in background, here in doInBackground we can send results to multiple times to event thread by publishProgress() method, to notify background processing has been completed we can return results simply.

  6. onProgressUpdate() method receives progress updates from doInBackground method, which is published via publishProgress method, and this method can use this progress update to update event thread onPostExecute() method handles results returned by doInBackground

  7. The generic types used are Params, the type of the parameters sent to the task upon execution, Progress, the type of the progress units published during the background computation.

Result, the type of the result of the background computation.

  1. If an async task not using any types, then it can be marked as Void type.
  2. An running async task can be cancelled by calling cancel(boolean) method.
Zar E Ahmer
  • 33,936
  • 20
  • 234
  • 300
0

Simple and Clear Answer as below

AsynTask:

Its give a simple implementation of thread without knowing anything about java thread model, AsyncTask gives various callback respective to worker thread and main thread.

Use: for small waiting operation like

fetching some data from web services and display over layout. Database query. When you realise that running operation is never - ever get nested.

Handler

Its Also implementation java thread model, its allowing nesting you running operation like fetching multiple images from internet.

Its best fit for:

1 Its allow to message queuing. 2. Message scheduling. 3. Multiple long running operation.

Thread

Now its time to thread.

Thread is parent of both, AsyncTask is internally using thread, that's mean you can also create your own tread model like AsyncTask and Handler instance is associated with a single thread and that thread's message queue. It require a good knowledge of java Multi-Threading Implementation.

Uses:

You can do all those things which is doable by AsyncTask and Handler.

1'hafs
  • 559
  • 7
  • 25