Интеллектуальный алгоритм удаленной синхронизации сервера с локальной БД (кеширование) в Android с пагинацией для поддержки в автономном режиме - PullRequest
0 голосов
/ 21 апреля 2019

Очень базовая настройка для автономной поддержки в приложении, где данные, извлекаемые из API, хранятся в SQLite для отображения списков, когда приложение не подключено к Интернету.

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

При новом запуске данные загружаются и сохраняются в БД в той последовательности, в которой они получены, и осуществляется разбиение на страницы. Скажем, через некоторое время данные обновляются и появляются новые элементы, которые получены на странице 1 (1-10) и странице 2 (11-20), но в БД есть элемент 11-20 как страница 1, поскольку сервер добавлен новые элементы в этом списке, и у local нет новых элементов.

Как мне справиться с этой ситуацией и правильно сохранить новые 10 (или более / несколько) элементов, чтобы при извлечении страницы 1 из моей БД сначала возвращались эти новые элементы, а затем более старые? В основном, как обрабатывать добавление / удаление / изменение данных в синхронизации с сервером.

Я хочу сделать что-то вроде многих приложений, таких как instagram / facebook, где вы продолжаете прокручивать список, как только вы запускаете приложение, делаете сетевой вызов в фоновом режиме, сохраняете нужный результат в БД и уведомляете Пользователь, что новые элементы добавляются и прокрутите список вверх, чтобы показать новые элементы.

Я не могу использовать самую последнюю библиотеку Paging и другие компоненты Jetpack для этой цели, так как для этого потребуется изменение уровня архитектуры в приложении.

1 Ответ

0 голосов
/ 22 апреля 2019

Я бы поставил метки времени при вставке в локальную БД.Затем при извлечении страниц, отличных от первой, также запрашивайте элементы с отметкой времени с момента последней выборки в отсортированном порядке.Объедините их с результатами для второй страницы.

...