Я знаю, что это старый вопрос, но я задавал то же самое сам.
То, что я нашел в качестве хорошего решения, особенно потому, что я имею дело с локальными данными, как вы, - это использовать следующий метод из ContentResolver:
registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)
Регистрирует класс наблюдателя, который получает обратный вызов при изменении данных, идентифицированных данным URI контента. Но это может произойти, только если ваш ContentProvider отправит уведомление. Например, если вы хотите получать уведомления на вышеупомянутом ContentObserver обо всех обновлениях, выполненных в вашей базе данных через ContentProvider, ваш ContentProvider должен реализовать обновление, подобное следующему:
@Override
public int update(Uri uri, ContentValues contentValues, String s, String[] strings) {
// code goes here
this.getContext().getContentResolver().notifyChange(uri, null);
return 0;
}
Использование notifyForDescendents при выполнении registerContentObserver может быть очень полезным.