ProgressDialog не отображается, когда AsyncTask.get () вызвал [duplicate]
Возможный дубликат:
AsyncTask блокирует угрозу пользовательского интерфейса и показывает прогресс-бар с задержкой
Я хочу показать progressDialog при получении JSON с любого сервера. Поэтому я использовал AsyncTask в качестве решения (не уверен, что есть другой выход).
Все хорошо, ProgressDialog работает правильно, пока я не вызову метод .get () с использованием экземпляра AsyncTask. Я полагаю, это как-то блокирует пользовательский интерфейс. Вот мой AsyncTask:
public class myAsync extends AsyncTask<String, String, List> {
String message; // for dialog message
ProgressDialog progress;
Intent myIntent;
Context ctx;
public myAsync(String message, Context ctx) {
this.message = message;
this.ctx = ctx;
progress = new ProgressDialog(ctx);
}
@Override
protected void onPreExecute() {
progress.setMessage(message);
progress.setIndeterminate(true);
progress.setCancelable(false);
progress.show();
}
@Override
protected List doInBackground(String... params) {
//returns any list after the task
return anyList;
}
@Override
protected void onPostExecute(List result) {
if(progress.isShowing())
progress.dismiss();
}
}
А вот myActivity, которое вызывает AsyncTask:
myAsync asyncTask = new myAsync("Loading...", this);
asyncTask.execute("Any string", "Other string");
asyncTask.get(); // If I comment out this line, ProgressDialog works
После выполнения, когда я попытался записать результат из doInBackground и onPostExecute, то нет проблем. Но если я хочу получить с помощью .get (), результат ProgressDialog не отображается или отображается так мало времени (возможно, 0,2 секунды)
В чем проблема?