2017-01-22 79 views
1

试图了解热修复很常见的例外:境界交易状态异常

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.isInTransaction返回true。 executeTransaction没有帮助。

+0

请显示与该地点相关的所有代码。或者发布问题重现的项目。 – Divers

+0

@Divers很难发布整个项目。我只想了解为什么异常信息是毫无意义的,或者我甚至会说误导性的,换句话说就是理解幕后发生的事情。 – eleven

+0

最有可能'realmList'与另一个'realm'实例关联,但没有代码我只能猜测。 – Divers

回答

0

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