Шаблон ожидания на загруженных данных - PullRequest
2 голосов
/ 01 мая 2011

Мне интересно, как мне решить одну проблему.

Когда я запускаю действие, я загружаю некоторые данные, используя AsyncTask.

Когда пользователь выбирает параметр в меню, Я использую кэшированные данные.

Что если он выберет параметры во время загрузки данных?Каков наилучший способ ожидания данных без блокировки интерфейса?

edit : я не хочу менять меню / отключать опцию.Я хочу показать спиннер в ожидании окончания загрузки данных.

Спасибо

Ответы [ 3 ]

3 голосов
/ 01 мая 2011

Отключить / включить элементы в onMenuOpened ():

@Override
  public boolean onMenuOpened(int feature, Menu menu) {
    if (menu != null) {
      menu.getItem(INDEX_FOR_THE_MENU_ITEM).setEnabled(stuffIsAvailable);
    }
    return super.onMenuOpened(feature, menu);
  }

РЕДАКТИРОВАТЬ - отображение диалогового окна прогресса:

ProgressDialog dialog = new ProgressDialog(context);
dialog.setMessage(context.getString(dialogTextResourceId));
dialog.show();

Не забудьте dialog.dismiss() когда закончите.

1 голос
/ 01 мая 2011

Вы можете вызвать AsyncTask.getStatus(), когда нажата опция меню и, если она все еще работает, отобразить ProgressDialog.

Затем в AsyncTask.onPostExeute() вы можете сообщить своей активности, что данные доступны, и отклонить счетчик.

0 голосов
/ 01 мая 2011

Запустить диалоговое окно прогресса отмены, когда загрузка начата, и закрыть после завершения загрузки. Читайте о ProgressDialog классе.

...