【问题标题】:Realm transaction state exception领域事务状态异常
【发布时间】:2017-01-22 22:11:33
【问题描述】:

试图理解hot to fix相当常见的异常:

Changing Realm data can only be done from inside a transaction.

下一个代码:

realm.isInTransaction();//returns true
realmList.add(object);//IllegalStateException is thrown

正如提到的here,很可能Realm.getDefaultInstance() 用于多个地方。但事实并非如此,我只是删除了所有 realm 实例用法。有没有办法理解它为什么会发生?因为异常消息完全没有意义:它说事务应该从事务内部完成,同时realm.isInTransaction 返回 true。 executeTransaction 没有帮助。

【问题讨论】:

  • 请显示与该地点相关的所有代码。或者发布问题重现的项目。
  • @Divers 很难发布整个项目。我只是想了解为什么异常消息毫无意义,或者我什至会说误导,换句话说,了解幕后发生的事情。
  • 很可能realmListrealm 的另一个实例相关联,但没有代码我只能猜测。
  • 有没有办法检查这个关联?喜欢realm.isItAssociatedWith()
  • 那么你是从你在事务中获得的 RealmObject 中获得这个领域列表的吗?

标签: android database realm


【解决方案1】:

虽然异常消息在大多数情况下具有误导性,但问题出在不同的Realm 实例中。检查整个代码并找到所有调用:Realm.getInstanceRealm.getDefaultInstance。如果领域对象是由Realm.getInstance(x) 创建的,则它不能与Realm.getInstance(y)Realm.getDefaultInstance() 一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多