/ / Як викликати батьківську функцію активності з ASyncTask? - android, android-asynctask, менеджер облікових записів

Як викликати функцію батьківської діяльності з ASyncTask? - android, android-asynctask, обліковий менеджер

setAccountAuthenticatorResult можна викликати з Діяльності, яка розширюється 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

}

Відповіді:

67 за відповідь № 1

Коли ви створюєте 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();
}
}