可以在主线程上写入Realm吗?
基本上我想在开始ObjectA
之前向Realm写一些ActivityA
。
ActivityA
启动后,需要立即访问(onCreate
}到ObjectA
- 我还可以在主帖上阅读吗?
基本上这个ObjectA
太大而无法通过捆绑包,因此我需要将其存储在缓存中。
我最初考虑将对象存储在内存缓存中,然后在活动开始后将其存储在Realm中,但我想知道是否可以跳过编写自己的内存缓存。
答案 0 :(得分:3)
可以在主线程上写入Realm吗?
在UI线程上写入Realm有两个含义:
1。)在打开事务时,将在UI线程上立即和同步评估由异步查询api创建的任何RealmResults
2.)如果后台线程已经在事务中写入Realm,那么它将阻止UI线程,直到该事务被提交。
在您的用例中,您似乎依赖Realm在UI线程上立即缓存单个对象,因此您可以编写(不会被阻止),并且您需要立即单个对象(因此您需要{{ 1}}这是同步API。)
因此,在您的情况下,在UI线程上使用Realm最有可能是安全的。
一般来说,Realm最佳实践是在后台线程上写入Realm,并在UI线程上从Realm读取(通过保持对RealmResults的字段引用,向其添加RealmChangeListener,然后在每次更改时接收更新的结果)到领域)。