2
我在辅助线程(在服务)使用Realm.getDefaultInstance(),并保存我的记录有:境界:添加记录,在其他线程无法找回
Realm realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
...
realm.copyToRealmOrUpdate(...
完成时(这是同步,所以它是马上完成的),我向UI线程提交一个EventBus消息,它可以开始下一个任务。
UI线程再次调用另一个工作线程,它执行另一个Realm.getDefaultInstance()和一个findAll()调用。它一无所获。为什么是这样? “一段时间后”它会发现项目很好,但不是马上。
这些项目已经在数据库中了:如果我在第一个工作线程上保存项目之后立即执行findAll(),它确实会返回项目。如果我在第二个工作线程上再次执行它,它什么也找不到。这是某种缓存吗?
你读过这个https://realm.io/docs/java/latest/#threading了吗? –
你可以使用一个监听器来更新用户界面:https://realm.io/docs/java/latest/#realm-threading-example – geisshirt
@Tim我读到了,它说它应该是没有用的,但它不是:“当你想从不同的线程访问相同的数据时,你可以获得一个新的Realm实例(即Realm.getInstance(RealmConfiguration config)或它的堂兄弟),并通过查询来获取你的对象。” – Frank