将 Realm 与 try-with-resources 一起使用是一种好习惯吗?

Is it a good practice to use Realm with try-with-resources?

在许多地方,建议在 ActivityonCreate 方法中调用 Realm.getDefaultInstance() 并在 onDestroy 中的 Realm 实例上调用 close (或在相应的演示者方法中)。

但是,对我来说,使用 Java 的 try-with-resources 结构会更干净:

try (final Realm realm = Realm.getDefaultInstance()) {
  // do stuff 
}

为什么更干净? IMO 更容易管理 realm 实例的狭窄范围。在生命周期的一个时刻获取实例并在另一个时刻关闭它,让我想起了过去使用 C++ 的日子,那时我们不得不担心在正确的时刻调用 delete

问题是:以这种方式使用 Realm 是一种不好的做法吗? 为什么 none 的教程提到它?

is it a bad practice to use Realm in such way?

不,推荐用于后台线程

参见官方文档https://realm.io/docs/java/latest/#closing-realm-instances


对于UI线程,建议使用onCreate()/onDestroy(),因为如果关闭本地Realm实例,那么绑定到它的结果就会失效。需要打开 Realm 才能提供与 Realm 文件中结果的连接。