使用GreenDao ORM在Android中观察数据库更改

4

我正在我的一个安卓项目中使用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());

谢谢。


您遇到了什么问题,您是如何访问数据的? - AlexS
我正在使用GreenDao来访问我的数据,它运作正常。我的问题是如何使观察者生效,以便能够监听数据库中的更改。 - EladB
你是怎么获取URI的? - Douglas Fornaro
1个回答

0

当你在GreenDao中更新一条记录时,你需要调用

daoSession.getYourBeanDao().update(yourBean);

然后使用这个来通知,

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

对我来说它很好用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接