Search code examples
androidandroid-contentproviderloaderandroid-cursorloader

CursorLoader - obtain information about what has changed in db


I use standard android ContentProvider and CursorLoader from support library. I am looking for best approach for obtain information about what has changed in database.

I know that I can read and compare cursor in function:

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
}

but reading all records is probably not good solution.

Do you know good solution for this problem?


Solution

  • If you use a content provider, you abstract away all the changes made to the underlying database by implementing CRUD methods to insert, update, delete or retrieve an item in the database.

    Sending a broadcast from the methods which you are interested would be an option to get notified of the changes being made to the database.

    I recall that I had used this method to count the number of items added to the database during a refresh cycle.

    Optionally you can send the Uri of the changed item as an intent extra to get a reference to the row in the database that has been changed.

    Additionally you can declare a global variable to enable or disable these broadcasts to fire only during situations of interest to us.