我有两个不与UI线程一起工作的线程。在一个线程中,我从服务器接收JSON并将其保存到Realm DB:
UIViewController
然后,在与用户交互后的另一个线程中,我需要获取此信息,但它不可用:
Realm realm = Realm.getDefaultInstance();
final RealmResults<MyClass> all = realm.where(MyClass.class).findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
all.deleteAllFromRealm();
realm.createOrUpdateAllFromJson(MyClass.class, recommendations);
}
});
realm.close();
因此,当我在我添加它们的线程上获取数据时,我可以看到它们,在其他线程上它们不可用。如何合并不同线程上的信息或将实例通知给Update?
使用: Realm realm = Realm.getDefaultInstance();
RealmResults<MyClass> responseItems = realm.where(MyClass.class).findAll();
realm.close();
更新: 应用程序重新启动后,来自不同表的信息将合并。
答案 0 :(得分:3)
我找到了一个解决方法 - 即使我在调用where(clazz.class)和数据是最新的之前我不需要任何调用.beginTransaction()的事务。