Служба Android / асинхронная задача / поток - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть небольшой совет с одной вещью, которую я хочу выполнить в своем приложении. Я хочу, чтобы мое приложение синхронизировало некоторые данные через Интернет каждый раз, когда оно запускается, и идея заключается в том, что у меня есть настраиваемая панель действий, которая содержит индикатор выполнения по кругу, и я хочу, чтобы этот индикатор выполнения запускался при загрузке данных и прекращался при загрузка окончена. И я хочу сделать это во всех действиях в моем tabhost (у меня есть 2 в моем приложении, и я хочу сделать это в основном). Я уже пробовал с thread и async task, но если я изменяю активность и возвращаюсь обратно, индикатор выполнения не вращается, то же самое с потоками. Я что-то упустил или мне тоже стоит попробовать с сервисом.

Или какой лучший способ сделать это?

1 Ответ

1 голос
/ 29 ноября 2011

Вы должны заботиться о жизненных циклах деятельности.Предполагая, что вы загружаете одни и те же данные для всех ваших действий (как я это делаю с обновлениями рекордов в моих играх), лучший способ (я смог прийти с ним) - создать отдельный поток, но только один раз (я использую объект singleton дляэто, так что я не начну скачивать дважды).Когда загрузка готова, она запускает намерение, чтобы действия могли знать об этом и корректно обновлять пользовательский интерфейс.

Таким образом, рабочий процесс выглядит следующим образом:

  • возобновление активности
  • получение экземпляра singletoin
  • начать загрузку, если она не активна / не нужна
  • обновить интерфейс, показывающий, что загрузка идет ...
  • получить широковещательную рассылку уведомления и обновить пользовательский интерфейс

Я также могу повторно использовать этот код для трансляции, поэтому я могу запланировать периодические обновления рекордов (даже если игра не активна в данный момент)

...