What's the mechanism of setNotificationUri? What's the mechanism of setNotificationUri? database database

What's the mechanism of setNotificationUri?


Please, correct me if I'm wrong somewhere.

ContentProvider calls something like this in query(…) method:

// Tell the cursor what uri to watch, so it knows when its source data changescursor.setNotificationUri(getContext().getContentResolver(), uri);

CursorLoader get cursor back and registers an observer.

/* Runs on a worker thread */@Overridepublic Cursor loadInBackground() {    Cursor cursor = getContext().getContentResolver().query(mUri, mProjection,            mSelection, mSelectionArgs, mSortOrder);    if (cursor != null) {        // Ensure the cursor window is filled        cursor.getCount();        registerContentObserver(cursor, mObserver);    }    return cursor;}/** * Registers an observer to get notifications from the content provider * when the cursor needs to be refreshed. */void registerContentObserver(Cursor cursor, ContentObserver observer) {    cursor.registerContentObserver(mObserver);}

When someone modifies data, ContentProvider notifies ContentResolver about changes:

getContext().getContentResolver().notifyChange(uri, null);

ContentResolver in its turn notifies all registered observers.

Observer, registered by CursorLoader, forces it to load new data.