假設我在我的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());