LoaderManager получить данные в автономном режиме, а затем в Интернете
Я хотел бы следовать этому хорошему шаблону юзабилити, где приложение хранит данные в автономном режиме для более быстрого ответа и обновляет их, когда получает новые данные в Интернете.
И я пользуюсь Loaders
с LoaderManager
,
Теперь, каков правильный подход для реализации вышеупомянутого подхода с Loaders
?
В настоящее время я использую два подхода, которые имеют свои недостатки и, как правило, не очень элегантны.
- Хранение данных в контексте приложения вместо SQLite
- Два отдельных
AsyncTaskLoaders
-offlineLoader
а такжеonlineLoader
, Первый выбирает данные из базы данных SQLite и сразу же показывает их, если они есть, а второй загружает данные с внешнего сервера, записывает их в базу данных (для offlineLoader) и заменяет автономные данные.
Что я действительно хотел бы иметь:
Один загрузчик, который извлекает данные в автономном режиме и возвращает их в LoaderManager, но продолжает работать после этого и возвращает свежие онлайн-данные, когда они будут готовы. Так что он должен вернуться дважды - возможно ли это?
1 ответ
Решение заключается в использовании ContentProvider
с Loader
Загрузка данных в пользовательский интерфейс и Service
загружает данные и помещает их в базу данных (и уведомляет ContentProvider
и остальная часть приложения, что это было изменено).