没有这个代码,因为它是一般性问题。在Android上,是否可以通过RealmObject
将RealmList
仍由Realm管理的子类实例添加到executeTransactionAsync()
?
示例:A类是RealmObject
子类。在主线程上,我从Realm中提取A的实例,并需要将其添加到由Realm管理的另一个RealmList
。我想在由同一主线程启动的异步事务中这样做。
我收到IllegalStateException
的消息为"无法从另一个Realm实例复制对象。"这是预期的吗?
答案 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
时,这可能会有所改变,但现在还没有。