我使用的是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}}
答案 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();
}