在主线程上写入Realm。

时间:2017-06-09 16:33:58

标签: realm realm-java

可以在主线程上写入Realm吗?

基本上我想在开始ObjectA之前向Realm写一些ActivityA

ActivityA启动后,需要立即访问(onCreate}到ObjectA - 我还可以在主帖上阅读吗?

基本上这个ObjectA太大而无法通过捆绑包,因此我需要将其存储在缓存中。

我最初考虑将对象存储在内存缓存中,然后在活动开始后将其存储在Realm中,但我想知道是否可以跳过编写自己的内存缓存。

1 个答案:

答案 0 :(得分:3)

  

可以在主线程上写入Realm吗?

在UI线程上写入Realm有两个含义:

1。)在打开事务时,将在UI线程上立即和同步评估由异步查询api创建的任何RealmResults

2.)如果后台线程已经在事务中写入Realm,那么它将阻止UI线程,直到该事务被提交。

在您的用例中,您似乎依赖Realm在UI线程上立即缓存单个对象,因此您可以编写(不会被阻止),并且您需要立即单个对象(因此您需要{{ 1}}这是同步API。)

因此,在您的情况下,在UI线程上使用Realm最有可能是安全的。

一般来说,Realm最佳实践是在后台线程上写入Realm,并在UI线程上从Realm读取(通过保持对RealmResults的字段引用,向其添加RealmChangeListener,然后在每次更改时接收更新的结果)到领域)。