I have been reading Android documentation (AsyncTask, Thread) and vogella tutorial about this matter, but I have doubts yet.
For example, I want to send a message from an Android app to a server. And I would like this process to be responsive. What should I use?
I have seen examples where they create a new Thread
for not block UI, but this way we don't have the progress of process, also you have to process the response within the Thread
because the run()
method doesn't returning anything.
AsyncTask
seems better option than Thread
, but I don't know what are the consequences of using an AsyncTask
instead of a Thread
.
background process
gets started and over and when can Iparse
the response.onPreExecute
andonPostExecute
which will allow us to do tasks before and after calling the background tasks.Please read this blog
http://crazyaboutandroid.blogspot.in/2011/12/difference-between-android.html
and Details are:
Difference between Android Service,Thread,IntentService and AsyncTask
When to use ?
Service
Thread
AsyncTask
AsyncTask enables proper and easy use of the UI thread.
- from Developer.The thing is - AsyncTask is a special kind of Thread - one which is a GUI thread, it works in the background and also let's you do something with the GUI - it is basically "pre-programmed" for you with functions
onPreExecute(), do inBackground(), onPostExecute()
.In order to make
Thread
work that way, you have to write a loooot of code.All other answers here are not complete, there is a big difference between AsyncTask and Thread, i.e.
Thread can be triggered from any thread, main(UI) or background; but AsyncTask must be triggered from main thread.
Also on lower API of Android(not sure, maybe API level < 11), one instance of AsyncTask can be executed only once.
For more information read Difference between Android Service, Thread, IntentService and AsyncTask
In general
Thread
Long task in general.
For tasks in parallel use Multiple threads (traditional mechanisms)
AsyncTask
Small task having to communicate with main thread.
For tasks in parallel use multiple instances OR Executor
in general using of 2 this features are equivalent, but AsyncTask is more simple in terms of integration with GUI
You can control its own functions