处理领域的交易在几件样品代码在那里,我见过像这样的模式:如何在Android
try (Realm realm = Realm.getDefaultInstance()) {
realm.beginTransaction();
workWithRealmData();
realm.commitTransaction();
}
的问题是 - 这是安全的吗?如果“workWithRealmData()”函数引发异常,则该事务不会被取消。但是,我们终于在试用资源的时候关闭了领域。
一个更安全的建筑看起来像下面这样:
try (Realm realm = Realm.getDefaultInstance()) {
realm.beginTransaction();
try {
workWithRealmData();
realm.commitTransaction();
} finally {
if (realm.isInTransaction()) {
realm.cancelTransaction();
}
}
}
这看起来更安全 - 但看起来也显著厉害,为所有callsites编码。
所以这真的可以归结为 - 如果Realm在之后立即关闭,是否可以忽略cancelTransaction?如果不是,会出现什么问题?
如果你关闭领域,那么忽略'cancelTransaction'是安全的。但它对我来说确实感觉有点不安全,因为如果你错过了一个地方,那么你会阻止一个线程。 –
太好了 - 谢谢你的确认,基督徒! – tmtrademark