balu...
balu...

Reputation: 221

Android : Calling the methods on UI thread from AsyncTask doInBackground method

I am using AsyncTask to upload data to UI. i wrote the code to download data from server in a separate method and i am calling that method from doinBackground. It will give error because UI methods can't access from doInBackground.but, i want to access . any alternative process is there to access the UI method from doinBackground.?

Upvotes: 16

Views: 32498

Answers (4)

Gene Bo
Gene Bo

Reputation: 12063

Use doInBackground() just for tasks that :

  1. Take some time
  2. Are not UI related

Then you can implement AsyncTask.onPostExecute() to run code to handle those results on main UI thread from AsyncTask

From JavaDoc for AsyncTask.onPostExecute():

"Runs on the UI thread after doInBackground. ... "

Upvotes: 3

Dan
Dan

Reputation: 3884

As the others have pointed out, you can use runOnUiThread. But, it seems a little odd that you would want to do that in your doInBackground. If you are wanting to indicate progress to the user you would want to handle that in AsyncTask.onProgressUpdate and call publishProgress in your doInBackground.

You can read more about AsyncTask here: http://developer.android.com/reference/android/os/AsyncTask.html

-Dan

Upvotes: 1

CommonsWare
CommonsWare

Reputation: 1006539

any alternative process is there to access the UI method from doinBackground.?

Call publishProgress() in doInBackground(). Put your UI-updating logic in onProgressUpdate() of your AsyncTask. onProgressUpdate() will be called on the main application thread (a.k.a., UI thread) after you call publishProgress(). Here is a sample project demonstrating this.

Upvotes: 48

ngesh
ngesh

Reputation: 13501

Call runOnUiThread(Runnable action)

more here

Upvotes: 8

Related Questions