JeremyLiao / LiveEventBus

:mailbox_with_mail:EventBus for Android,消息总线,基于LiveData,具有生命周期感知能力,支持Sticky,支持AndroidX,支持跨进程,支持跨APP
Apache License 2.0
3.83k stars 515 forks source link

希望增加一个removeObservers(lifecycleOwner)的方法,场景如下: #139

Closed junixapp closed 2 years ago

junixapp commented 2 years ago

虽然正常注册的observer,在UI被destroy的时候能自动取消。但很多场景下,UI是用Dialog实现的;在Dialog中注册observer时是使用的context,即activity。但dialog消失的时候,希望能移除observer,但此时activity没有消失。如果多次打开dialog,会重复注册observer,引起一些问题。所以希望提供一个能移除一个lifecycleOwner所有observer的方法

JeremyLiao commented 2 years ago

虽然正常注册的observer,在UI被destroy的时候能自动取消。但很多场景下,UI是用Dialog实现的;在Dialog中注册observer时是使用的context,即activity。但dialog消失的时候,希望能移除observer,但此时activity没有消失。如果多次打开dialog,会重复注册observer,引起一些问题。所以希望提供一个能移除一个lifecycleOwner所有observer的方法

这种场景建议使用observeForever+ removeObserver

junixapp commented 2 years ago

@JeremyLiao 为了可扩展,我把dialog实现了LifecycleOwner接口,直接observer(dialog)了,dialog关闭后自动移除监听器了。

JeremyLiao commented 2 years ago

@JeremyLiao 为了可扩展,我把dialog实现了LifecycleOwner接口,直接observer(dialog)了,dialog关闭后自动移除监听器了。

这个解决方案nice!