【发布时间】:2020-11-17 11:07:51
【问题描述】:
这是我第一个使用 koin 的 mvvm 项目,我正在使用 Room 数据库。我在 viemwodel 中进行网络调用,从 api 获取数据后,我想将其存储在数据库中。下面是我的类,其中包含所有数据库方法,如插入和删除。
class UserViewModel(application: Application) : AndroidViewModel(application) {
private val userSDAO: UserDAO
private val userDB: AppSettingsDatabase
init {
userDB = AppSettingsDatabase.getAppSettingsDatabase(application.applicationContext)!!
userDAO = userDB.userDao()
}
fun getAppSetting():LiveData<AppSettingsEntity>{
return userDB.appSettingDao().getAllAppSettings()
}
fun deleteUser() {
userDB.databaseWriteExecutor.execute { ->
userDAO.deleteUser()
}
}
}
我从这样的活动中调用这个类
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
现在我想在我正在调用网络 api 的 viewmodel 类中调用它,但我不知道使用 koin 或任何其他方式访问它的最佳方法是什么。我需要不同的方法数据库访问,我必须在每个方法中像上面一样初始化它。
class SubscriptionViewModel(): BaseViewModel() {
fun init(owner:ViewModelStoreOwner) {
userServiceViewModel = ViewModelProvider(owner).get(UserServiceViewModel::class.java)
}
}
【问题讨论】:
标签: android kotlin mvvm android-room koin