Я использую KoinDI
, и у меня есть экран входа в систему. Вот мой код -
Мой код AppModule, который показывает определение LoginViewModel
DI -
private val viewModelModules = module {
viewModel { LoginViewModel(get()) }
}
Мой LoginFragment
код -
private val viewModel: LoginViewModel by viewModel()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.login_button?.setOnClickListener {
onLoginButtonPressed()
}
}
private fun onLoginButtonPressed() {
val email = view?.email_value?.text.toString()
val password = view?.password_value?.text.toString()
viewModel.onLoginPressed(email, password).observe(this, Observer {
if (it.userLoggedIn) {
//...
}
handleError(it.error)
})
}
Проблема заключается в том, что когда я нажимаю «Войти» и сразу же помещаю приложение в фоновый режим, и вызов API завершается с ошибкой (я намеренно отказываюсь от него для тестирования со стороны бэкэнда), и когда я вывожу приложение на передний план, я вижу, что модель просмотра продолжает наблюдать, что приводит к API вызов происходит снова и снова, пока он не увенчается успехом. Почему это происходит? Почему моя модель просмотра не может наблюдать только при нажатии кнопки входа?