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?