领域在一个线程中保存数据在另一个线程中获取

时间:2016-06-06 13:31:57

标签: java android database multithreading realm

我有两个不与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();

更新: 应用程序重新启动后,来自不同表的信息将合并。

1 个答案:

答案 0 :(得分:3)

我找到了一个解决方法 - 即使我在调用where(clazz.class)和数据是最新的之前我不需要任何调用.beginTransaction()的事务。