领域从意向服务同步写入

时间:2016-11-10 17:04:40

标签: java android realm

我使用的是Realm数据库和Intent服务和UI,因为它是库的一部分,我无法调用或设置Realm的默认值,所以我使用Realm.getInstance检索域(config)用于每个目的,并且因为我不能重用该领域而不知道我将运行什么线程,所以我也不能使用异步写入。

因此,每次写一条记录时都会出现以下错误

"应避免将异步查询与本地写入混合。 Realm会将任何异步查询转换为同步查询以保持一致。改为使用异步写入。"

我假设通过"本地写作"作者的意思是"同步"?

根据我对这种情况下领域利用率的理解,我不相信有其他选择吗?

我是否正确理解从Intent Service方案编写对象的正确方法是:

E/REALM_JNI: jni: ThrowingException 7, std::exception in /Users/zaki/fromgit/realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_TableQuery.cpp line 1285, .
E/REALM_JNI: Exception has been throw: std::exception in /Users/zaki/fromgit/realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_TableQuery.cpp line 1285

此外,我收到以下日志消息(没有抛出异常)

{{1}}

1 个答案:

答案 0 :(得分:1)

  

“应该避免将异步查询与本地写入混合.Ereal将任何异步查询转换为同步以保持一致。改为使用异步写入。”

如果在UI线程上执行同步写入,则只会收到此警告。当然你可以确保你不在UI线程上写?

这适用于意向服务:

 Realm realm = getNewRealmInstance();
 try {
       realm.executeTransaction(new Realm.Transaction() {
            public void execute(Realm realm) {
                Record newRecord = new Record().setField1(x).setField2(y);
                realm.insert(newRecord);
            } 
       });
 } finally {
       realm.close();
 }