A hopefully straightforward question: When ContentResolver.notifyChange()
is called for a given URI, are ContentObserver
s observing descendent URIs of this URI notified?
E.g. Say I have a cursor setup to observer the URI of a specific resource:
Uri uriA = Uri.parse("content://" + AUTHORITY + "/orders/21");
cursor.setNotificationUri(getContext().getContentResolver(), uriA);
I then notify the ContentResolver
of a change to an ancestor of this URI (e.g. because I have deleted all orders):
Uri uriB = Uri.parse("content://" + AUTHORITY + "/orders");
getContext().getContentResolver().notifyChange(uriB, null);
Would my Cursor
, registered to observe uriA
, be notified?
The ContentResolver. query() client method always returns a Cursor containing the columns specified by the query's projection for the rows that match the query's selection criteria. A Cursor object provides random read access to the rows and columns it contains.
The Content Resolver behaves exactly as its name implies: it accepts requests from clients, and resolves these requests by directing them to the content provider with a distinct authority. To do this, the Content Resolver stores a mapping from authorities to Content Providers.
A URI is a uniform resource identifier while a URL is a uniform resource locator.
To use the ContentObserver you have to take two steps: Implement a subclass of ContentObserver. Register your content observer to listen for changes.
It depends on how it was registered. If the ContentObserver
was registered with the notifyForDescendents
argument set as true, then yes. Otherwise no.
The registration is done through the method
ContentResolver#registerContentObserver
:
void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With