Я решил эту проблему, используя Обработчик с.В своем пользовательском AsyncTask я передаю обработчик из Activity в конструктор.В AsyncTask onPostExecute
я вызываю Handler.sendMessage, и он отправляет все данные обратно в Activity.
AsyncTask Code (ваш класс "A")
public class MyAsyncTask extends AsyncTask<RestClient, Void, RestResponse> {
Handler handler;
public MyAsyncTask(Handler handler) {
this.handler = handler;
}
@Override
protected RestResponse doInBackground(RestClient... rc) {
// Get data from web service or whatever...
}
@Override
protected void onPostExecute(RestResponse response){
Message msg = Message.obtain();
msg.obj = response;
this.handler.sendMessage(msg);
}
}
Обработчик, объявленный в Activity
private Handler activityHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// Do something with msg.obj
};
Вызов AsyncTask из Activity, передаваемый из обработчика в ctor (сделайте это в обработчике событий нажатия кнопки)
MyAsyncTask async = new MyAsyncTask(activityHandler);
async.execute(...);