Android架构无法使用不同的生命周期添加相同的观察者

时间:2018-04-26 14:11:02

标签: android android-architecture-components

我有一个具有MainActivity的应用程序,它启动InvoiceActivity并启动最终启动PaymentSuccessActivity的InvoicePaymentActivity。

我开始使用架构组件,它看起来运行正常,我从PaymentSuccessActivity启动MainActivity时遇到了问题。

到目前为止,我只是启动新的Intent,应用程序将“重置”到主屏幕。使用ViewModel,我得到“无法添加具有不同生命周期的相同观察者”。

我找到了2个解决方案,但无法想出哪个更好:

  1. 在onResume订阅观察者,取消订阅onPause

  2. 在下一个活动开始后,完成除MainActivity之外的所有活动。因此,当我刚刚完成PaymentSuccessActivity时,用户将在MainActivity上。这有一个缺点,即用户向后导航......

  3. 但似乎我再也无法添加观察者...我怎么能 unsibscribe /订阅?我的代码现在不能正常工作......

    override fun onResume() {
        super.onResume()
        viewModel.intercom.observe(this, observer)  
    }
    
    
    override fun onPause() {
        super.onPause()
        viewModel.intercom.removeObserver { observer }
    }
    

1 个答案:

答案 0 :(得分:1)

所以整个问题都是基于使用匿名的Observer类。一旦我创建了我的观察者类实现观察者界面,app startet就可以正常工作,而无需手动观察/删除。任何人都可以解释为什么这是问题吗?