Android-Realm:对象不再有效。它被另一个线程删除了吗?

时间:2018-11-30 11:34:13

标签: android transactions realm

在我的应用程序中,我正在使用Realm数据库来缓存数据。当应用程序启动时,用户可以看到缓存的数据,然后应用程序发送REST API请求来更新所有数据。如果某些内容被删除,我将使用以下代码:

val realm = Realm.getInstance(dbConfig)
    realm.beginTransaction()
    realm.apply {
        delete(SupportLineRealmModel::class.java)
        delete(ClientUserRealmModel::class.java)
        delete(ColleagueRealmModel::class.java)
        delete(ConferenceRealmModel::class.java)
        delete(ConferenceMemberRealmModel::class.java)
        delete(BusinessContactRealmModel::class.java)
        delete(AdvertisingSupportLineRealmModel::class.java)

        insertOrUpdate(supportLines)
        insertOrUpdate(clientUsers)
        insertOrUpdate(colleagues)
        insertOrUpdate(businessContacts)
        insertOrUpdate(adSupportLines)
        insertOrUpdate(conferences)
    }
    realm.commitTransaction()

但是有时我会遇到异常:Object is no longer valid to operate on. Was it deleted by another thread?。看起来应用程序正在尝试在事务中间从Realm获取数据。

从Realm中确切删除RealmObject时?在delete()之后还是在commitTransaction()通话之后?如果在commitTransaction()之后,Realm始终应该拥有我的所有对象,因为REST API响应始终包含相同的项目。

0 个答案:

没有答案