Я использую базу данных Realm в своем проекте kotlin. Я использую архитектуру MVVM, поэтому я создал класс репозитория, который содержит коды ниже:
class DatabaseRepository {
private val database = Realm.getDefaultInstance()
fun addOrUpdateUser(user: JSONObject) {
database.executeTransactionAsync{
database.createOrUpdateObjectFromJson(UserModel::class.java, user)
}
}
}
Также я создал свой класс ViewModel следующим образом:
class DatabaseViewModel(private val database:DatabaseRepository) : ViewModel() {
fun addUser(information: JSONObject) {
database.addOrUpdateUser(information)
}
}
, и мой класс View ModelFactory имеет вид как это:
class ViewModelFactory(private val databaseRepository:DatabaseRepository):ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return modelClass.getConstructor(DatabaseRepository::class.java).newInstance(databaseRepository)
}
}
, поэтому я создаю их экземпляр в своей основной деятельности следующим образом:
val databaseRepo=DatabaseRepository()
val factory=ViewModelFactory(databaseRepo)
database = ViewModelProviders.of(this,factory).get(DatabaseViewModel::class.java)
проблема в том, что, хотя я пытаюсь добавить некоторые данные в базу данных, используя Функция 'addUser' в классе ViewModel Я получаю эту ошибку:
Доступ к объектам области возможен только в том потоке, в котором они были созданы.
что я сделал не так?