Android - 观察者数据库随 GreenDao ORM 发生变化

标签 android sqlite android-contentprovider greendao contentobserver

我正在使用 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());

谢谢。

最佳答案

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

daoSession.getYourBeanDao().update(yourBean);

然后用这个来通知,

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

它对我有用。

关于Android - 观察者数据库随 GreenDao ORM 发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34112588/

相关文章:

java - URI权限被撤销后如何重新请求?

android - 有多个图书馆项目吗?

java - android sqlite 一次读取所有行

java - 如何将旋转单选更改为多选

mysql - 运行 rake db :migrate VERSION=0 and redid the migration, 后,我丢失了数据库中的所有内容

database - 轻量级客户端/服务器数据库?

android - 使用 ContactsContract,查询匹配的姓名或电子邮件

android - 使用 ContentValues 数组批量插入

android - 图像在 ImageView 中未正确显示

android - Android 2.2.1在音乐开始时崩溃()