JeremyLiao / LiveEventBus

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

(急急急)发送一次数据,收到两条消息,不知是不是框架问题 #137

Open romantic011 opened 2 years ago

romantic011 commented 2 years ago

发送数据: LiveEventBus.get(Constants.DATA, Data.class).post(bean);

接收数据 LiveEventBus.get(Constants.DATA, Data::class.java).observe(this, Observer { //todo }) 2021-07-13 20:38:16.155 1235-1235/com.xxx.xxx I/[LiveEventBus]: post: Data(id=null, pageName=A500, pageDesk=自取, tableware=null, username=null, userPhone=null, userRemarks=null, time=null, dishesList=null, takeaway=false, orderId='', pageType=6, deliveryTitle='', storeName='', sn='', takeawayName='', virtualPhone1='', virtualPhone2='', priceAll='', pricePackage='', priceDelivery='', priceDiscounted='', priceReal='', source=1, barCodeStr=null, qrCodeStr=null, qrCodeStrDesc='', dishes='', extraData='') with key: DATA

2021-07-13 20:38:16.155 1235-1235/com.xxx.xxx I/[LiveEventBus]: message received: Data(id=null, pageName=A500, pageDesk=自取, tableware=null, username=null, userPhone=null, userRemarks=null, time=null, dishesList=null, takeaway=false, orderId='', pageType=6, deliveryTitle='', storeName='', sn='', takeawayName='', virtualPhone1='', virtualPhone2='', priceAll='', pricePackage='', priceDelivery='', priceDiscounted='', priceReal='', source=1, barCodeStr=null, qrCodeStr=null, qrCodeStrDesc='', dishes='', extraData='')

2021-07-13 20:38:16.157 1235-1235/com.xxx.xxx I/[LiveEventBus]: message received: Data(id=null, pageName=A500, pageDesk=自取, tableware=null, username=null, userPhone=null, userRemarks=null, time=null, dishesList=null, takeaway=false, orderId='', pageType=6, deliveryTitle='', storeName='', sn='', takeawayName='', virtualPhone1='', virtualPhone2='', priceAll='', pricePackage='', priceDelivery='', priceDiscounted='', priceReal='', source=1, barCodeStr=null, qrCodeStr=null, qrCodeStrDesc='', dishes='', extraData='')

romantic011 commented 2 years ago

补充:偶现

junixapp commented 2 years ago

+1 ,我也遇到了,多次observer后,Fragment没有销毁;ViewPager2场景下,会受到很多消息

JeremyLiao commented 2 years ago

补充:偶现

image

可以参考这个自查一下:

Q:收到重复的消息怎么办?

A:同样通过Console.getInfo()获取即时的调试信息,主要去观察有没有重复注册的Observer(Console的用法)

https://github.com/JeremyLiao/LiveEventBus/blob/master/docs/console.md

JeremyLiao commented 2 years ago

+1 ,我也遇到了,多次observer后,Fragment没有销毁;ViewPager2场景下,会受到很多消息

可以参考这个自查一下:

Q:收到重复的消息怎么办?

A:同样通过Console.getInfo()获取即时的调试信息,主要去观察有没有重复注册的Observer(Console的用法)

https://github.com/JeremyLiao/LiveEventBus/blob/master/docs/console.md

romantic011 commented 2 years ago

补充:偶现

image

可以参考这个自查一下:

Q:收到重复的消息怎么办?

A:同样通过Console.getInfo()获取即时的调试信息,主要去观察有没有重复注册的Observer(Console的用法)

https://github.com/JeremyLiao/LiveEventBus/blob/master/docs/console.md

收到, 谢谢您的回复.偶现问题,我这边通过上面的方式去复现下. 补充一下: 1、注册的observe 是在Activity 的onCreate生命周期中执行的,LiveEventBus 会在Activity销毁后自动解绑么,有没有这种可能,是它没有解绑?
2、 在Activity中onCreate中定义observer是不是个正确的存放位置?

麻烦您了^_^

JeremyLiao commented 2 years ago

补充:偶现

image 可以参考这个自查一下: Q:收到重复的消息怎么办? A:同样通过Console.getInfo()获取即时的调试信息,主要去观察有没有重复注册的Observer(Console的用法) https://github.com/JeremyLiao/LiveEventBus/blob/master/docs/console.md

收到, 谢谢您的回复.偶现问题,我这边通过上面的方式去复现下. 补充一下: 1、注册的observe 是在Activity 的onCreate生命周期中执行的,LiveEventBus 会在Activity销毁后自动解绑么,有没有这种可能,是它没有解绑? 2、 在Activity中onCreate中定义observer是不是个正确的存放位置?

麻烦您了^_^

1、注册的observe 是在Activity 的onCreate生命周期中执行的,LiveEventBus 会在Activity销毁后自动解绑么,有没有这种可能,是它没有解绑? observe方法订阅会在Activity销毁后自动解绑,observeForever不会自动解绑,需要手动unregister

2、 在Activity中onCreate中定义observer是不是个正确的存放位置? 这里应该是个常用的订阅消息的地方

romantic011 commented 2 years ago

补充:偶现

image 可以参考这个自查一下: Q:收到重复的消息怎么办? A:同样通过Console.getInfo()获取即时的调试信息,主要去观察有没有重复注册的Observer(Console的用法) https://github.com/JeremyLiao/LiveEventBus/blob/master/docs/console.md

收到, 谢谢您的回复.偶现问题,我这边通过上面的方式去复现下. 补充一下: 1、注册的observe 是在Activity 的onCreate生命周期中执行的,LiveEventBus 会在Activity销毁后自动解绑么,有没有这种可能,是它没有解绑? 2、 在Activity中onCreate中定义observer是不是个正确的存放位置? 麻烦您了^_^

1、注册的observe 是在Activity 的onCreate生命周期中执行的,LiveEventBus 会在Activity销毁后自动解绑么,有没有这种可能,是它没有解绑? observe方法订阅会在Activity销毁后自动解绑,observeForever不会自动解绑,需要手动unregister

2、 在Activity中onCreate中定义observer是不是个正确的存放位置? 这里应该是个常用的订阅消息的地方 谢谢!!! 使用的方式就是在onCreate,且使用的是observe方法订阅,出现的现象是发一个,收两个,因为是生产环境中偶现,只能添加日志,等待复现后,查看日志了

meijiadev commented 2 years ago

这个是注册的问题,不能用this,要用viewLifecycleOwner

the6nnoo commented 2 years ago

注意一下 是不是LifecycleOwner 的生命周期不对劲