【发布时间】:2017-06-09 16:33:57
【问题描述】:
在主线程上写Realm可以吗?
基本上我想在开始 ActivityA 之前向 Realm 写一些 ObjectA。
一旦ActivityA 启动,它需要立即访问(在onCreate)ObjectA - 我也可以在主线程上阅读吗?
基本上这个ObjectA 太大而无法通过捆绑包,所以我需要将它存储在缓存中。
我最初考虑将对象存储在内存缓存中,然后在活动开始后将其存储在 Realm 中,但我想知道是否可以跳过编写自己的内存缓存。
【问题讨论】:
-
如何获得
ObjectA?你能通过initialData()把它放到Realm中吗?一般不建议在 UI 线程上使用事务的原因是 1.) 后台线程事务阻塞beginTransaction()调用,因此如果您有 bg 线程事务和 2.) 它会强制执行异步查询同步。否则它可以工作,你无论如何都要使用findFirst() -
initialData()是什么?是的,我们想在后台线程上运行这些是有道理的。因此,为什么我要考虑先将这些数据存储在内存中,然后再将其懒惰地存储在 Realm 中。只是想知道我是否可以使用 Realm 避免内存缓存,但看起来我不能。 -
为什么不显示微调器,存储在后台线程中,等待完成,隐藏微调器,启动活动,在活动B中的主线程上读取(如果是单个对象,则读取速度很快),你通过了它是对象的 ID。
-
@clu 嗯?我刚刚说过你可以使用 Realm 避免内存中缓存
-
真的吗?我想我没看懂你的评论。如果我想避免将对象存储在主线程上,则必须在后台线程中进行。在这种情况下,我还需要从后台线程加载它。这很好,但是当它从 bg 线程加载时,我必须展示一个微调器(正如 Martin 建议的那样)。这是你的意思吗?如果不是,请您详细说明。谢谢!
标签: realm realm-java