领域花费太长时间将对象复制到 RealmObject

Realm taking too long to copy objects to RealmObject

我正在使用领域在我的 Andorid 应用程序中存储产品列表。 因此,我收到了一个包含大约 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 似乎无法正常工作。

如果您可以将对象添加到 fromDomainToPersistence() 中的 Realm 中,将会更快。 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
}