Android - 使用 GreenDao ORM 更改观察者数据库

Posted

技术标签:

【中文标题】Android - 使用 GreenDao ORM 更改观察者数据库【英文标题】:Android - Observer DB changes with GreenDao ORM 【发布时间】:2016-03-10 19:36:47 【问题描述】:

我在我的一个安卓项目中使用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 来增加我的数据量,它可以工作。我的问题是如何让这个观察者工作,这样我就可以听到数据库中的变化。 你是如何获得 URI 的?? 【参考方案1】:

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

daoSession.getYourBeanDao().update(yourBean);

然后用这个来通知,

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

它对我有用。

【讨论】:

以上是关于Android - 使用 GreenDao ORM 更改观察者数据库的主要内容,如果未能解决你的问题,请参考以下文章

[转]Android ORM系列之GreenDao最佳实践

如何在android应用中使用greendao orm框架

Android ORM——初识greenDAO 3及使用greenDAO 3前应该掌握的一些知识点

Android ORM——初识greenDAO 3及使用greenDAO 3前应该掌握的一些知识点

android_orm框架之greenDAO

Android - 使用 GreenDao ORM 更改观察者数据库