我使用Realm作为我的应用的数据库。了解哪个表在全局领域发生了变化ChangeListener
我在我的数据库中有几个表 - 表1,表2,表3,表4和表5。
我有与表相同数量的活动,其中每个显示其中一个表中的数据。
例如,
活性1将从表1显示数据
活性2会从表2从表3中显示数据
Activity3将显示数据等
要尽快更新各自的活动如在其相应的表中的更改一些数据,我用我的领域实例注册了一个RealmChangeListener。我在中心类中实例化了Realm。我不想在所有单独的类中注册RealmChangeListener,因为注册一次后,中央领域实例将更易于维护。
但是,在RealmChangeListener的onChange回调函数中,我得到了Realm对象,并且没有办法让我知道哪些表中的数据实际发生了更改。
我正在添加如何实例化realm的代码,并在下面注册changeListener。
MyApplication.java
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
MainClass mainClass = new MainClass(getApplicationContext());
}
}
MainClass.java
public class MainClass{
public MainClass(Context context){
RealmConfiguration config = new RealmConfiguration.Builder(context).build();
Realm realm = Realm.getInstance(config);
realm.addChangeListener(new RealmChangeListener<Realm>() {
@Override
public void onChange(Realm element) {
//is it possible to know here that data for which table changed?
}
});
}
}
我的目标是通过LocalBroadcastManager发送广播与信息有关该表的onChange从回调改变。所有的活动都会监听这个广播,如果表中与听力活动相关的数据发生了变化,那么它会自行更新。其余的活动只会忽略广播。我的目标是仅在应用程序中的一个位置监视数据库更改,并只发送一个广播以进行数据库更改。处理数据库更改的业务逻辑将取决于广播中包含的信息。
我的问题是,是否有可能得到有关在RealmChangeListener中注册的全局领域中修改了哪些表的通知?如果没有,那么是否有其他办法可以实现我想要做的事情?
我一起工作:
境界 - 1.0.1
Android的工作室 - 2.1.2
民SDK - 19
目标SDK - 23
我测试我的应用程序在Android 5.1.1
感谢您提前提供的所有帮助。
非常感谢你@Christian Melchior为您的及时回复!我想我会尝试在每个活动的领域结果上注册一个更改监听器。然而,第二种方法似乎也很有趣。再次感谢您的帮助。 – rbing