Realm with kotlin use syntax: This Realm instance has already been closed, making it unusable

80 Views Asked by At

I'm packing all realm operation inside one object:

object RealmDatabase {

    private val config = RealmConfiguration.Builder().name("XXX").build()

    init {
        Realm.setDefaultConfiguration(config)
    }

    fun getClassTimetables() : RealmResults<TimetableData> {
        val realm = Realm.getDefaultInstance()
        realm.use {
            return realm.where<TimetableData>().findAll()
        }
    }

    fun addClassTimetables(data: List<TimetableData>) {
        val realm = Realm.getDefaultInstance()
        realm.use {
            realm.executeTransaction { transactionRealm ->
                transactionRealm.copyToRealm(data)
            }
        }
    }

    fun emptyClassTimetable() {
        Realm.getDefaultInstance().executeTransaction { transactionRealm ->
            transactionRealm.where<TimetableData>().findAll().deleteAllFromRealm()
        }
    }
}

When I call RealmDatabase.getClassTimetables(), the exception was thrown:
This Realm instance has already been closed, making it unusable.
But I have already obtain one default instance and always make sure it was closed when operation was finished.
What's wrong with my code?

0

There are 0 best solutions below