У меня есть приложение с MainActivity, которое запускает InvoiceActivity и запускает InvoicePaymentActivity, которое наконец запускает PaymentSuccessActivity.
Я начал использовать компоненты архитектуры, и, похоже, он работает нормально, но я обнаружил проблему при запуске MainActivity из PaymentSuccessActivity.
До сих пор я просто запускал новый Intent, и приложение «сбрасывало» его на главный экран. С помощью ViewModel я получаю сообщение «Невозможно добавить одного и того же наблюдателя с разными жизненными циклами».
Я нашел 2 решения, но не могу понять, какое из них лучше:
Подписаться на наблюдателя в onResume, отписаться от onPause
Завершите все предыдущие действия, кроме MainActivity, после запуска следующего. Поэтому, когда я только закончу PaymentSuccessActivity, пользователь будет включен в MainActivity. Это имеет недостаток пользовательской навигации назад ...
Но, похоже, я не могу снова добавить наблюдателя ... как я могу
unsibscribe / подписаться? Мой код сейчас не работает ...
override fun onResume() {
super.onResume()
viewModel.intercom.observe(this, observer)
}
override fun onPause() {
super.onPause()
viewModel.intercom.removeObserver { observer }
}