Android Асинхронная задача, которую ProgressDialog не показывает до фонового потока, заканчивается

У меня есть действие Android, которое захватывает канал RSS от URL и использует синтаксический анализатор SAX для засовывания каждого объекта от XML в массив. Это все хорошо работает, но, как ожидалось, занимает немного времени, таким образом, я хочу использовать AsyncActivity, чтобы сделать это в фоновом режиме. Мой код следующие:

class AddTask extends AsyncTask<Void, Item, Void> {

    protected void onPreExecute() {
        pDialog = ProgressDialog.show(MyActivity.this,"Please wait...", "Retrieving data ...", true);
    }

    protected Void doInBackground(Void... unused) {
        items = parser.getItems();

        for (Item it : items) {
            publishProgress(it);
        }
        return(null);
    }

    protected void onProgressUpdate(Item... item) {
        adapter.add(item[0]);
    }

    protected void onPostExecute(Void unused) {
        pDialog.dismiss();
    }
  }

Который я призываю onCreate() с

new AddTask().execute();

Строка items = parser.getItems() хорошо работает - items будучи arraylist, содержащим каждый объект от XML. Проблема, с которой я сталкиваюсь, состоит в том, что при запуске действия, ProgressDialog, в котором я создаю onPreExecute() не отображен до окончания doInBackground() метод закончился. т.е. Я получаю черный экран, длинную паузу, затем абсолютно заполненный список с объектами в. Почему это происходит? Почему UI не тянет, показ ProgressDialog, синтаксический анализатор, получая объекты и инкрементно добавляя их к списку, затем отклонение ProgressDialog?

15
задан jackbot 24 April 2010 в 00:21
поделиться

1 ответ

У меня работает

@Override
protected void onPreExecute() {
        dialog = new ProgressDialog(viewContacts.this);
        dialog.setMessage(getString(R.string.please_wait_while_loading));
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.show();
    }
11
ответ дан 1 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: