Android - Observer DB随GreenDao ORM变化

时间:2015-12-06 00:30:43

标签: android sqlite android-contentprovider greendao contentobserver

我在我的一个Android项目中使用GreenDao。 我试图在完成更改时实现观察者/监听器。

到目前为止,我创建了一个静态函数基本函数(保存,替换和删除),只发布一个事件(通过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());

感谢。

1 个答案:

答案 0 :(得分:0)

在GreenDao中更新记录时, 你会打电话给

daoSession.getYourBeanDao().update(yourBean);

然后使用此通知,

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

它对我有用。