【问题标题】:Detect change in realm database and update remote database android检测领域数据库中的变化并更新远程数据库android
【发布时间】:2018-05-26 05:25:40
【问题描述】:

有没有办法检测领域数据库是否更改?

我正在 Android 应用上记录用户活动。每当本地发生变化时,我想用本地领域数据库中的更新值更新后端。这样我的后端总是与本地数据库同步。

【问题讨论】:

  • 我已经更新了我的答案。检查并回复

标签: android database mobile realm


【解决方案1】:

Realm Documentation中所述

-添加更改监听器。

-添加数据

-更改会立即反映在 onChangeListener 中。

private RealmResults<Dog> puppies;

// ...

puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); // => 0

realm.executeTransaction(new Realm.Transaction() {
    @Override
    void public execute(Realm realm) {
        Dog dog = realm.createObject(Dog.class);
        dog.setName("Fido");
        dog.setAge(1);
    }
});

puppies.addChangeListener(new RealmChangeListener() {
    @Override
    public void onChange(RealmResults<Dog> results) {
      // results and puppies point are both up to date
      results.size(); // => 1
      puppies.size(); // => 1
    }
});

更新

 localRealm.addChangeListener(new RealmChangeListener<Realm>() {
        @Override
        public void onChange(Realm realm) {
            //do stuff
        }
    });

【讨论】:

  • 我认为您在交易之后添加的更改侦听器只会在 Realm 0.89.0 到 2.x.x 上调用,并且从 Realm 3 开始不再是这种情况。 X。我想。
  • 我正在使用 4.2.0 版本并实现RealmChangeListener&lt;Realm&gt; 接口,我在onChange 中得到回调。但是在文档中提到过,您是对的,必须先注册监听器。
  • @EpicPandaForce 您如何看待在安卓应用程序类中设置领域更改监听器?会不会有问题?
  • @humble_wolf 没有人阻止你,但请确保你保留对 RealmResults 的引用作为字段变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多