在我的应用程序中,我正在使用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响应始终包含相同的项目。