Как вызвать функцию родительской активности из ASyncTask?

setAccountAuthenticatorResult может быть вызван из Activity, который расширяет AccountAuthenticatorActivity . Моя активность расширяет это, но запускает ASyncTask, и поэтому этот setAccountAuthenticatorResult следует вызывать из ASyncTask (или результат ASyncTask должен быть возвращен в основной поток).

Как это сделать?

Что не так в коде ниже?

 AsyncTask<Uri, Void, Bundle> task = new RetrieveAccessTokenTask(this, consumer, provider, prefs).execute(uri); public class RetrieveAccessTokenTask extends AsyncTask<Uri, Void, Bundle> { private Context context; public RetrieveAccessTokenTask(Context context, OAuthConsumer consumer, OAuthProvider provider, SharedPreferences prefs) { this.context = context; } @Override protected void onPostExecute(Bundle result) { context.setAccountAuthenticatorResult(); // doesn't work } 

Solutions Collecting From Web of "Как вызвать функцию родительской активности из ASyncTask?"

Когда вы создаете AsyncTask, вы можете добавить к нему новый конструктор и передать ссылку на Activity:

 AsyncTask myTask = new MyTask(this); 

А затем из метода onPostExecute () в AsyncTask вы можете вызвать метод в Activity.

 public class MyTask extends AsyncTask<String, String, String> { public MyActivity activity; public MyTask(MyActivity a) { this.activity = a; } // ...... protected void onPostExecute(String result) { activity.myMethod(); } }