Android – Изменение базы данных наблюдателя с помощью ORM GreenDao

Я использую GreenDao в одном из моих проектов Android. Я пытаюсь реализовать наблюдателя / слушателя, когда будут сделаны изменения.

До сих пор я создал базовые функции статических функций (сохранение, замену и удаление), которые только что отправили событие (через EventBus), но этот подход дал мне массу головных болей.

В настоящее время я пытаюсь использовать ContentObserver, который по какой-то причине не работает (см. Прилагаемый код), но я бы хотел, чтобы вы слышали предложения для других общих решений.

наблюдатель:

public class DBObserver extends ContentObserver { public DBObserver() { super(null); Logger.e("DBObserver was initialized!"); } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Log.d("SOMETHING CHANGED IN DB OBSERVER"); } @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); Log.d("SOMETHING CHANGED IN DB OBSERVER"); } } 

Регистрация для наблюдателя (внедрена в Application onCreate):

 DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, DB_NAME, null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession(); getContentResolver().registerContentObserver(TicketModelContentProvider.CONTENT_URI, true, new DBObserver()); 

Благодарю.

Когда вы обновляете запись в GreenDao, вы будете звонить

 daoSession.getYourBeanDao().update(yourBean); 

И затем использовать это для уведомления,

 mContext.getContentResolver().notifyChange(YOUR_URI, null); 

Это сработало для меня.