samedi 5 décembre 2015

Android - Observer DB changes with GreenDao ORM

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.

Aucun commentaire:

Enregistrer un commentaire