При синхронизации Я перезаписываю все свои локальные данные с данными сервера. Для этого сначала позвоню realm.delete(realm.objects(MyObj))
для всех моих объектов. Затем я сохраняю объекты ответа с realm.add(obj, update: false)
. Все в одной транзакции. Полезная нагрузка может занять некоторое время, но она недостаточно велика, чтобы оправдать реализацию разбивки на страницы.Блокировка базы данных Realm?
Можно ли использовать приложение в обычном режиме во время этого процесса? Могут ли они хранить новые элементы, которые были удалены в очищающей части транзакции, или это приведет к ошибке или будет перезаписано во время добавления? Если да, то как я могу избежать этого?
Спасибо! если я правильно понял, мне пришлось бы 1. Поместить полный вызов синхронизации (включая удаленный запрос) внутри фоновой транзакции, поэтому возможные операции записи во время синхронизации помещаются в очередь после нее и 2. переписывать все мои записи, чтобы проверить, был ли объект недействителен и извлекает его снова, если да, чтобы они все еще могли нормально выполняться, если синхронизация обновила db между ними? – Ixx
В настоящее время я просто блокирую пользовательский интерфейс (с наложением прогресса) во время синхронизации, чтобы избежать перезаписывания возможных записей за это время. Это, конечно, не очень хороший UX и смотря, как я могу это улучшить. – Ixx
На самом деле, мне не нужна проверка недействительности, так как я не держу ссылки на результаты. Я создаю новое царство для каждого запроса. – Ixx