2017-01-22 81 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()一起使用。