У меня есть проект, который отображает RealmObjects в Listview через адаптер. Область обновляется в SyncAdapter, который запускается каждые несколько минут. Это извлекает данные с сервера и обновляет область, что иногда приводит к удалению RealmObjects. Когда этот синхронизирующий цикл синхронизирующего фона завершен, он отправляет широковещательную передачу, которую улавливает хостинг-активность ListView, что заставляет операцию повторно запрашивать область и повторно заполнять адаптер с измененными данными.объекты realm в списке, удаленные фоновой синхронизацией, приводят к сбою
Проблема в том, что когда пользователь прокручивает ListView, адаптер извлекает поля из объектов области для создания представлений. Если синхронизация выполняется в это время, и объект удаляется из области (через SyncAdapter), приложение вылетает при попытке создать представление из удаленного объекта.
Что такое хороший шаблон для решения этого дела? Я подумал о том, чтобы добавить наблюдателя в реальном времени на стороне пользовательского интерфейса и немедленно запросить и переустановить список RealmObject адаптера, когда он срабатывает, однако состояние гонки все равно останется, это будет просто более короткое окно.
Я также подумал о том, чтобы установить автоматическое обновление в false в области потока пользовательского интерфейса и реализовать некоторую логику, чтобы вручную обновить область потоков пользовательского интерфейса при обнаружении изменения.
Любые другие идеи?
Если ваш адаптер синхронизации работает на фоновом потоке. Достаточно зарегистрировать ChangeListener в RealmResults и обновить ListAdapter при его запуске. Единственный раз, когда вы должны столкнуться с сбоями из-за удаленных объектов, - если вы держите ссылки на них вне области обновления. –