я следующий кусок кода:Android, в асинхронном режиме и диалогах
public class SomeActivity extends Activity {
Context context;
List<MenuItem> menuItems;
public void importList(View v) {
menuItems = new ArrayList<MenuItem>();
ProgressDialog dialog = ProgressDialog.show(this.context, "TITLE", "MSG");
MyAsyncTask task = new MyAsyncTask(context); // Context is here because I tried to create ProgressDialog inside pre/postExecute, but it doesn't work either
task.execute();
try {
// menuItems = task.get();
} catch(Exception e) {
// : (
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
this.context = this;
}
}
Когда я комментирую строку, где я получаю значения от AsyncTask ("MenuItems = task.get()") Everythings работать нормально. Но когда я раскомментирую его, появляется ProgressDialog ПОСЛЕ завершения задачи и возвращенного значения. Почему это?
Я думаю, что он имеет отношение к этим контекстам (вот почему я включил метод onCreate), но я не знаю, как его исправить. Очевидно, что я хочу, чтобы ProgressDialog отображал перед выполнением задачи, а не после.
Не уверен, что релевантно - MyAsyncTask выполняет http-запрос и некоторый синтаксический анализ json.
'sth' не слово. –
Согласовано с кодомMagic. Метод 'AsyncTask'' get() 'в значительной степени бесполезен, поскольку он блокирует поток пользовательского интерфейса и эффективно делает вашу асинхронную задачу синхронной. – Squonk