Эффективный способ реализовать подкачку с системой кэширования данных и избранного в Android - PullRequest
0 голосов
/ 01 февраля 2019

У меня проблема.В моем приложении мне нужно реализовать 2 просмотрщика с предметами.В одном обзоре переработчика есть элементы, загружаемые из бэкэнда постранично (когда пользователь просматривает все элементы, новые элементы будут загружаться с индикатором загрузки внизу), а в другом обзоре переработчика есть элементы, которые пользователь добавил в избранное, и эти элементы хранятся в базе данных Room.В первом окне повторного просмотра должна быть кнопка для добавления в избранное и индикатор загрузки, который показывает ход загрузки (когда пользователю, добавляющему элемент в избранное, необходимо загрузить некоторые изображения для использования функции с библиотекой Glide).Пример «Пейджинг с сетью» поможет реализовать первое окно повторного просмотра без функции «Добавить в избранное».Ссылка: https://github.com/googlesamples/android-architecture-components/tree/master/PagingWithNetworkSample. Я нашел возможное решение: добавить в элемент поле класса Entity, которое будет отображать статус элемента (не в избранном, загрузка, добавлено в избранное).Это должно работать, потому что LivePagedList всегда будет вызывать наблюдателя для обновления данных в представлении recycler, когда данные в таблице базы данных Room будут изменены, и DiffUtil найдет, какой именно элемент изменился, и эффективно обновит его в представлении recycler.Но это не будет работать, если мне нужно обновить данные.Когда пользователь вызывает обновление, мне нужно удалить все элементы из базы данных, но я должен сохранить избранные элементы.Поэтому у меня будет такая ситуация: элементы с идентификаторами от 1 до 20 удаляются из базы данных, но элементы с идентификатором 15 не могут быть удалены, поскольку пользователь добавил их в избранное.Вызван API, элементы с идентификаторами от 1 до 10 загружены и сохранены в базе данных, теперь в режиме просмотра списка утилит У меня есть элементы с идентификаторами 1-10, 15. Пользователь достиг конца обзора утилизатора, и функция Boundary Callback будет использовать элемент с идентификатором 15 для вызова бэкенда для загрузки дополнительных элементов.,Элементы с идентификатором 11-14 будут пропущены.Мне нужны советы, чтобы решить эту проблему.Буду признателен, если вы знали, как работает библиотека подкачки от Google, прежде чем ответить.

...