Класс Loader
сам по себе не знает, когда изменяется набор данных, и в настоящее время является реализацией, специфичной для CursorLoader
.Теперь внутри моего приложения данные, которые мне нужно было обновить, находятся внутри локальной базы данных SQLite (без ContentProvider), поэтому мне пришлось изменить CursorLoader
, чтобы вместо этого использовать мою локальную базу данных, как упомянула Дайан Хэкборн в группе разработчиков .
К сожалению, просто возвращение курсора из loadInBackground не позволяет ContentObserver
должным образом уведомлять загрузчик при изменении данных, это потому, что AbstractCursor
вызывает notifyChanged()
только при вызове requery()
Курсор.
Поскольку ContentObserver
никогда не сообщит Loader
, что данные изменились, я в конечном итоге сам вызвал Loader.onContentChanged()
по мере необходимости.На данный момент все, кажется, работает, но я обновлю этот ответ, если возникнут какие-либо существенные проблемы.