Библиотека подкачки Android - обновление данных на текущей странице

Я использую новую библиотеку подкачки Android Jetpack для отображения списка элементов, полученных от API. Я хочу, чтобы данные на текущей странице (скажем, на странице 3) обновлялись каждые несколько минут без обновления всего списка с помощью функции invalidate (), так как это переводит представление Recycler на свою первую страницу.

Проблема, которую я вижу здесь, заключается в том, что библиотека подкачки предполагает, что данные неизменяемы.

https://developer.android.com/reference/android/arch/paging/DataSource#updating-paged-data

При поиске в Google я вижу, что обходной путь - использовать Room и отображать пользовательский интерфейс на основе обновлений БД из вызова API.

Есть ли другие предложения по решению этой проблемы без использования местного магазина.


person Badhrinath Canessane    schedule 11.03.2019    source источник


Ответы (1)


Единственный способ избавиться от этой проблемы - ввести слой сохранения с помощью Room. https://github.com/googlesamples/android-architecture-components/tree/master/PagingWithNetworkSample#paging-with-database-and-network

Согласно документам здесь: https://developer.android.com/reference/androidx/paging/DataSource#updating-paged-data

Если у вас есть более детализированные сигналы обновления, такие как сетевой API, сигнализирующий об обновлении одного элемента в списке, рекомендуется загружать данные из сети в память. Затем представьте эти данные в PagedList через DataSource, который является оболочкой для моментального снимка в памяти. Каждый раз, когда копия в памяти изменяется, можно сделать недействительным предыдущий источник данных и создать новый, обертывающий новое состояние моментального снимка.

https://developer.android.com/topic/libraries/architecture/paging/data#consider-content-updates

Создавая наблюдаемые объекты PagedList, подумайте о том, как работают обновления содержимого. Если вы загружаете данные непосредственно из базы данных Room, обновления автоматически передаются в пользовательский интерфейс вашего приложения.

person Badhrinath Canessane    schedule 08.06.2019