我正在使用领域在我的Andorid应用程序中存储产品列表。 所以,我收到一个produtc的列表,大约有3k个对象。 而我正试图将它们存储起来:
@Override
public void saveAll(List<ProductsDomain> domainProducts) throws InstantiationException, IllegalAccessException {
Realm instance = getRealmInstance();
RealmList<ProdutcsRealm> realmProducts = new RealmList<ProdutcsRealm>();
try {
ProdutcsRealm realmProduct = getClasseEntidadePersistencia().newInstance();
for (ProductsDomain domainProduct : domainProducts) {
fromDomainToPersistence(domainProduct, realmProduct);
realmProducts.add(realmProduct);
}
instance.beginTransaction();
instance.copyToRealm(realmProducts);// taking to long, 3k items
instance.commitTransaction();
} catch (Exception e) {
e.printStackTrace();
instance.cancelTransaction();
return;
}
}
所以,这个领域需要花费太多时间,比如20分钟。有人想知道更好的表现吗?
解决: 我发现了问题!我在所有迭代中使用相同的ProductsRealm实例。当您尝试将多个引用的列表保存到同一个对象时,看起来Realm不能正常工作。
答案 0 :(得分:1)
如果您可以在fromDomainToPersistence()
中将对象添加到您的领域,速度会更快。 saveAll()
方法可能类似于:
public void saveAll(...) {
Realm instance = getRealmInstance();
try {
instance.beginTransaction();
for (ProductsDomain domainProduct : domainProducts) {
fromDomainToPersistence(instance, domainProduct);
}
instance.commitTransaction();
} catch (Exception e) {
// ...
}
}
和
public void fromDomainToPersistence(Realm r, DomainProduct domainProduct) {
ProductRealm realmProduct = r.createObject(ProductRealm.class);
// set the fields' values
}