Разница между cursor.setNotificationUri() и getContentResolver(). NotifyChange(uri,null)
Я новичок в Android может кто-нибудь сказать мне, в чем разница между cursor.setNotificationUri()
а также getContentResolver().notifyChange(uri,null)
при реализации контент-провайдера.
Я видел это cursor.setNotificationUri()
используется в query()
метод и при обновлении или вставке getContentResolver().notifyChange()
используется.
Я мало что понимаю getContentResolver().notifyChange()
уведомляет решатель, что некоторые данные были изменены, но что делает cursor.setNotificationUri()
делать там?
1 ответ
Они используются симбиотически. Если вы реализуете ContentProvider
по сути, когда кто-то запрашивает вашего провайдера, вы производите Cursor
и позвонить setNotificationUri()
на это с некоторым рациональным Uri
(такой как Uri
используется, чтобы сделать запрос). Позже, если данные обслуживаются вашим ContentProvider
изменения, например, после вставки / обновления / удаления, вы звоните getContentResolver().notifyChange(uri, null)
так что любой, кто в настоящее время имеет Cursor
(потому что они запрашивали ранее) получает уведомление, что данные изменились, и они должны повторно запросить. Если они используют CursorLoader
повторный запрос происходит автоматически.