Android documentation says that AsyncTask postExecute() is called on the UI thread. I was under the impression that postExecute() was called from the Thread where execute() was called : I have been using an AsyncTask in a background Service with its own thread, and postExecute() was called in the service thread, not the main thread.
However, I recently had an issue with the postExecute() not being called at all, while an exception was thrown : ” sending a message to a Handler on a dead thread”.
How is it exactly :
– shall AsyncTask be used ONLY from the main thread ?
– if not, in which thread postExecute() is supposed to be called : always the UI thread, or the execute() calling thread ?
Thank you
AsyncTask’s pre and postExecute methods are invoked on the thread on which the task instance was created. Where you call execute() doesn’t matter. The thread on which you create the task must be a looper thread and in practice should always be the main thread (or UI thread.)