LiveEventBus icon indicating copy to clipboard operation
LiveEventBus copied to clipboard

黏性事件

Open admasterlu opened this issue 5 years ago • 14 comments

你好,请问黏性事件发送出去,只要有一个接收就会移除掉吗?其他再注册就收不到了

admasterlu avatar May 24 '19 10:05 admasterlu

可以在订阅的时候选择调用observe或者observeSticky,如果订阅的时候使用observe,则不作为黏性事件处理,如果使用observeSticky,则作为黏性事件处理

JeremyLiao avatar May 25 '19 13:05 JeremyLiao

我现在就是使用黏性事件,observeSticky,后面跳转的Activity里面oncreat注册了接收,第一次进入可以收到消息,关闭Activity再次打开就没有消息回调了。大哥,我想一直可以收到之前那个黏性事件,谢谢哈

admasterlu avatar May 27 '19 03:05 admasterlu

这个问题是因为加入了自动clear功能,当你退出那个activity的时候,你订阅的livedata由于没有observer被自动clear了,你重新进去的时候订阅的是一个新的livedata,所以没有消息。我后面会加一个控制是否自动clear,关闭了就没这个问题了

JeremyLiao avatar May 27 '19 07:05 JeremyLiao

明白了 ,感谢 感谢解答。那冒昧问一下,下个版本大概多久哈

admasterlu avatar May 27 '19 07:05 admasterlu

尽量今天晚上给出

JeremyLiao avatar May 27 '19 07:05 JeremyLiao

老哥辛苦 为开源作出共享,开个赞赏哈。一杯咖啡,聊表心意

admasterlu avatar May 27 '19 08:05 admasterlu

不用了哈,我还要谢谢你找出了这个问题:)

JeremyLiao avatar May 27 '19 08:05 JeremyLiao

请使用1.4.3版本,默认配置即可

JeremyLiao avatar May 27 '19 13:05 JeremyLiao

已使用,成功。感谢感谢

admasterlu avatar May 27 '19 13:05 admasterlu

这个自动清除默认false,是不是黏性,非黏性都不会自动解除了?会对非黏性事件造成性能损耗吗

admasterlu avatar May 27 '19 13:05 admasterlu

不会造成性能损耗,只是内存上的优化

JeremyLiao avatar May 27 '19 13:05 JeremyLiao

我的理解是粘性事件和非粘性事件本来就该是独立的两类事件,粘性事件默认就不应该支持自动clear,而非粘性事件默认应该要支持自动clear会更好。是否考虑提供配套的postSticky - observeSticky。

codingWz avatar May 28 '19 10:05 codingWz

如果那样的话应该需要两个池来分别存储黏性事件和非黏性事件的LiveData,这种需要两个不同的LiveData来实现 或者额外新增一个标识符来记录目前处于黏性事件的LiveData,在Remove的时候判断该标识符来决定是否清除

KittenBall avatar May 30 '19 02:05 KittenBall

这个地方的思想和eventbus有些不一样,liveeventbus是让你在订阅的时候确定是以Sticky的方式订阅还是以普通的方式订阅,同一个消息既可以以Sticky的方式订阅,也可以以普通的方式订阅

JeremyLiao avatar May 30 '19 12:05 JeremyLiao