Категория: Android
7888
3.66666666666671111111111Rating 3.67 (3 Votes)

Ниже опишу процесс вызова callback из AsyncTask, этот метод очень полезен в сучае необходимости получения данных из задачи и использовании ProgressDialog без параметра .get(). Предположим проект уже существует, далее описывается сама "технология", добавляем в проект интерфейс:

public interface AsyncTaskCompleteListener {
    public void onTaskComplete(JSONObject result);
}

Создаем класс задачи, добавлем в него наш callback:

// callback
        private Activity activity;
        private AsyncTaskCompleteListener callback;
        private ProgressDialog dialog;
        
        public GetTask(Activity act){
            this.activity = act;
            this.callback = (AsyncTaskCompleteListener)act;
        }

в onPostExecute вызываем:

callback.onTaskComplete(result);

подключаем к своему активити:

public class Main extends Activity implements AsyncTaskCompleteListener{ ..... }

нас компилятор попросит добавить метод в класс Main:

@Override
public void onTaskComplete(JSONObject result) {
    // TODO Auto-generated method stub
}

В данном случае я вызываю задачу так:

void callTask(String link){
        task.new GetTask(this).execute(link);
    }

Смотрим результат к примеру так:

@Override
    public void onTaskComplete(JSONObject result) {
        // TODO Auto-generated method stub
        System.out.println(result);
    }