我有一个具有MainActivity的应用程序,它启动InvoiceActivity并启动最终启动PaymentSuccessActivity的InvoicePaymentActivity。
我开始使用架构组件,它看起来运行正常,我从PaymentSuccessActivity启动MainActivity时遇到了问题。
到目前为止,我只是启动新的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 }
}
答案 0 :(得分:1)
所以整个问题都是基于使用匿名的Observer类。一旦我创建了我的观察者类实现观察者界面,app startet就可以正常工作,而无需手动观察/删除。任何人都可以解释为什么这是问题吗?