假设我在我的android应用程序A和B中有2个领域文件.A是加密的,B不是。我在UI线程上查询领域A,并用一堆字符串属性获取领域对象。现在基于这些属性,我需要使用executeTransaction
来更新领域B中的对象,以避免在UI线程中执行此操作。 execute方法为我提供了一个领域B实例的引用,但我也需要打开领域A,因为我无法与该线程共享前一个对象。由于领域A是加密的,我认为在事务中打开和关闭它可能会有点慢。在事务中制作领域对象的只读副本并使用它会不会更快?这将是这样的:如何创建只读领域对象?
RealmObject var1 = realmA.where(SensibleData.class).findFirst();
final ReadOnlyObject myReadOnlyObject = copyRealmObject(var1);
realmB.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
//use myReadOnlyObject to decide how to update RealmObjects
}
});
这是一个很好的解决我的问题?如何实现copyRealmObject
以避免存在内存问题?更具体地说,复制字符串的最佳方法是什么?也许像
copiedAttribute = new String(realmObject.getSomeStringAttribute());