将 Realm 与 try-with-resources 一起使用是一种好习惯吗?
Is it a good practice to use Realm with try-with-resources?
在许多地方,建议在 Activity
的 onCreate
方法中调用 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 文件中结果的连接。
在许多地方,建议在 Activity
的 onCreate
方法中调用 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 文件中结果的连接。