ContentObserver - просто не могу поверить в то, что я прочитал - PullRequest
1 голос
/ 23 марта 2012

Я прочитал и прочитал соответствующие вопросы и ответы и не могу поверить, что если мой пользовательский ContentProvider делает такие вещи:

insertUri = ContentUris.withAppendedId( Data2TableMetaData.CONTENT_URI, rowId)
// notify listeners
getContext().getContentResolver().notifyChange(insertUri, null);

... У ContentObservers нет способа получить rowId.

Это действительно правильно?Я думаю, что я что-то упускаю, потому что это не кажется хорошим.

Ответы [ 2 ]

1 голос
/ 23 марта 2012

ты прав.Интерфейс обратного вызова не содержит информации о том, что изменилось, только то, что изменение произошло.Но обычно разработчикам рекомендуется использовать такие вещи, как CursorLoaders, которые делают всю тяжелую работу за вас.http://developer.android.com/reference/android/content/CursorLoader.html

Однако теперь с новым Android 16 API можно получить URI строки в методе OnChange.

0 голосов
/ 06 апреля 2013

На уровне API 16 ContentObserver получает URI, который имеет rowId.Однако, до этого, для ситуации, когда вы вставляете строку, а затем хотите только слушать этот rowId, вы можете вызвать ContentResolver.registerContentObserver сразу после вставки, когда вы знаете rowId.

...