将现有的RealmObject异步添加到RealmList

时间:2017-05-25 17:31:15

标签: android realm

没有这个代码,因为它是一般性问题。在Android上,是否可以通过RealmObjectRealmList仍由Realm管理的子类实例添加到executeTransactionAsync()

示例:A类是RealmObject子类。在主线程上,我从Realm中提取A的实例,并需要将其添加到由Realm管理的另一个RealmList。我想在由同一主线程启动的异步事务中这样做。

我收到IllegalStateException的消息为"无法从另一个Realm实例复制对象。"这是预期的吗?

1 个答案:

答案 0 :(得分:1)

异步事务在后台线程上运行,您无法在线程之间传递托管Realm,RealmResults和RealmObject。您可以传递主键。

MyClass myClass = realm.where(MyClass.class).findFirst();
final long id = myClass.getId();
realm.executeTransactionAsync((bgRealm) -> {
    MyClass bgClass = bgRealm.where(MyClass.class).equalTo("id", id).findFirst();
    B b = bgRealm.where(B.class).equalTo("id", bId).findFirst();
    b.getList().add(bgClass);
});

添加thread-safe reference时,这可能会有所改变,但现在还没有。