Мне сложно понять, какой правильный рабочий процесс - загрузить json-данные и показать их в ListView. В настоящее время я использую AsyncTask для загрузки и анализа данных, которые показаны с помощью ArrayAdapter. Проблема заключается в том, что AsyncTask не пережить перезагрузку активности.
Поэтому мне интересно, являются ли услуги лучшим решением, но как передать данные в ArrayAdapter? Должен ли я всегда использовать db как средний уровень для хранения и извлечения данных?
Так что лучше? AsyncTask в сохраненном фрагменте или службе с использованием db?
благодаря
Я использую службу для поиска и хранения данных в формате sqlite db. После того, как служба сохранит данные (или если есть проблема), я запускаю трансляцию. Мои фрагменты/действия прослушивают эти определенные трансляции и затем действуют соответствующим образом.
Я нахожу, что это очень чистое решение и позволяет избежать проблем утечки асинхронных ссылок на разрывы/поворот активности и т.д.
Наиболее простым решением было бы вернуть вашу текущую AsyncTask в onRetainNonConfigurationInstance
или использовать фрагмент с setRetainInstance (true).
Вы можете получить доступ к AsyncTask в inCreate с помощью getLastNonConfigurationInstance
Фактически это зависит от требования того, что именно требуется для деятельности и как долго могут отображаться данные, не ударяя службу снова.
Один из подходов к вышеупомянутой проблеме - получить доступ к данным json и сохранить их в базе данных. Теперь извлеките данные из базы данных и отобразите их в Activity. Теперь вы можете реализовать сервис для обновления данных по мере необходимости. Служба просто ударит по веб-службе и обновит ваш db-контент по мере необходимости.