Вопрос: Какова наилучшая практика для отчета о ходе выполнения/завершения от долговременной задачи до Activity? И что делать, когда отчет о прогрессе/завершении происходит, когда активность изменяется в фоновом режиме/ориентации?Долгосрочные задачи с обратными вызовами активности или фрагмента
Пример реальной жизни: Активность делает сетевой вызов, получая данные с сервера (это может занять 10+ секунд). Когда этот сетевой вызов завершен, активность должна быть извещена, и действие должно показать, что сетевой вызов завершен.
Это легко реализовать, пока приложение остается открытым. Моя проблема заключается в том, что делать, если сетевой вызов завершен, когда приложение находится в фоновом режиме (активность будет пропускать любые обратные вызовы).
Я смотрел на следующих способов сделать это, но я не могу решить, что делать:
- службы, что порождает поток, где выполняется сетевой вызов. Служба привязана к Управлению. При завершении работы в сети вызов службы вызывает активность. Если «Активность» находится в фоновом режиме, когда служба выполняет обратный вызов (поэтому активность пропускает обратный вызов), должен ли Activity опросить службу для сохраненных данных?
- IntentService, которая передает данные, когда сеть завершения вызова (что делать, если активность пропускает эту передачу, потому что это в фоновом режиме?)
- AsyncTask, но это плохо, когда активность находится в фоновом режиме и т.д.
Как мне подойти к этой проблеме?
Спасибо за ссылку. У меня есть два вопроса: Что делать, если задача завершается, когда действие находится в фоновом режиме. Тогда все обратные вызовы будут пропущены, не так ли? Как получить данные, которые были получены с сервера, когда активность была в фоновом режиме? Не похоже на «лучший способ» использовать фрагмент для запуска задач? Хотя я определенно вижу точку в этом подходе. Редактировать: Должен ли я хранить данные в файле HeadlessFragment, а затем запрашивать данные из фрагмента, если «TaskHasFinished»? –
@JonasJensen см. Отредактированный ответ на ваши вопросы. – Nerd