循环内的领域 executeTransaction()?
Realm executeTransaction() inside a loop?
我想知道我是否可以优化下面的代码,或者我是否应该不再打扰?
- 我是否需要第一个
if
,我可以在其中检查所有项目的数量?会有帮助吗?
- 我应该在
for
循环中执行 realm.executeTransaction()
吗?我认为这样更好,因为 executeTransaction()
可能很昂贵(? - 不确定)。另一方面,如果我将第一个 if
放在 for
循环中,我可以省略它。
基本上,我从 Realm 中删除了我的一些项目:
Realm realm = Realm.getDefaultInstance();
if(realm.where(Alert.class).notEqualTo("exchange", AVERAGE_EXCHANGE).count() > 0) {
realm.executeTransaction(r -> {
for (Alert alert : realm.where(Alert.class).notEqualTo("exchange", AVERAGE_EXCHANGE).findAll()) {
NetworkUtils.deleteAlertFromServer(alert);
alert.deleteFromRealm();
}
});
}
realm.close();
回答您的问题:
你不需要if
。只做交易里面的逻辑。
方法executeTransaction
开销大,事务内部循环也是如此
你可以这样做:
realm.executeTransaction(r -> {
RealmResults<Alert> alerts = realm.where(Alert.class).notEqualTo("exchange", AVERAGE_EXCHANGE).findAll();
for (Alert alert : alerts) {
NetworkUtils.deleteAlertFromServer(alert);
}
alerts.deleteAllFromRealm();
});
我想知道我是否可以优化下面的代码,或者我是否应该不再打扰?
- 我是否需要第一个
if
,我可以在其中检查所有项目的数量?会有帮助吗? - 我应该在
for
循环中执行realm.executeTransaction()
吗?我认为这样更好,因为executeTransaction()
可能很昂贵(? - 不确定)。另一方面,如果我将第一个if
放在for
循环中,我可以省略它。
基本上,我从 Realm 中删除了我的一些项目:
Realm realm = Realm.getDefaultInstance();
if(realm.where(Alert.class).notEqualTo("exchange", AVERAGE_EXCHANGE).count() > 0) {
realm.executeTransaction(r -> {
for (Alert alert : realm.where(Alert.class).notEqualTo("exchange", AVERAGE_EXCHANGE).findAll()) {
NetworkUtils.deleteAlertFromServer(alert);
alert.deleteFromRealm();
}
});
}
realm.close();
回答您的问题:
你不需要
if
。只做交易里面的逻辑。方法
executeTransaction
开销大,事务内部循环也是如此
你可以这样做:
realm.executeTransaction(r -> {
RealmResults<Alert> alerts = realm.where(Alert.class).notEqualTo("exchange", AVERAGE_EXCHANGE).findAll();
for (Alert alert : alerts) {
NetworkUtils.deleteAlertFromServer(alert);
}
alerts.deleteAllFromRealm();
});