Это зависит от того, насколько «фоновым» будет процесс.Если вы хотите получить данные с веб-сайта без ведома пользователя, вам следует использовать Service
+ AsyncTask
(вам все равно нужен AsyncTask
, поскольку по умолчанию Service
запускается втот же поток / процесс, что и в пользовательском интерфейсе - поэтому, если вы выполняете какие-либо длительные задачи без отдельного потока, вы блокируете поток пользовательского интерфейса, и это будет довольно неприятно).
Однако такой подход приведет кдругие головные боли.Например, вам нужно будет найти способ запустить службу - либо используйте AlarmManager
для ее регулярного запуска, либо найдите какой-то другой механизм (например, прослушайте намерение вещания).
Другой подход заключается в загрузке данных в Activity
, показывая пользователю сообщение о загрузке (вы можете посмотреть ProgressDialog
).Таким образом, пользователь знает, что вы делаете, и вы можете очень просто реализовать функцию «обновления».
В обоих случаях у вас есть довольно много вариантов хранения.Вы можете:
- сохранять файлы, которые вы извлекаете, непосредственно в dir / sdcard кэша (проверьте
getCacheDir()
на Context
) - , если вы выполняете синтаксический анализ (JSON / XMLнапример) вы можете хранить сериализованные объекты в кеше dir / sdcard, чтобы вам не приходилось анализировать их снова
- вы можете использовать базу данных sqlite (на сайте разработчика Android есть документы и руководства)
Затем вы можете использовать сохраненные данные в любом из компонентов вашего приложения (действия, услуги и т. Д.)