4

I'm using GreenDao in one of my android projects. I'm trying to implement an observer/listener for when changes are done.

So far I created a static-functions basic functions (save, replace and delete) that just post an event (via EventBus), but this approach has been giving me a-lot of headaches.

Currently, I'm trying to use ContentObserver which for some reason does not work (see attached code), but I'd love you hear suggestions for other generic solutions.

observer:

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");
    }
}

registration for observer (implemented on 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());

Thanks.

EladB
  • 326
  • 5
  • 15

1 Answers1

0

When you update a record in GreenDao, you will call

daoSession.getYourBeanDao().update(yourBean);

and then use this to notify,

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

It's worked for me.

Allen Lin
  • 1
  • 1