LiveEventBus
LiveEventBus copied to clipboard
黏性事件
你好,请问黏性事件发送出去,只要有一个接收就会移除掉吗?其他再注册就收不到了
可以在订阅的时候选择调用observe或者observeSticky,如果订阅的时候使用observe,则不作为黏性事件处理,如果使用observeSticky,则作为黏性事件处理
我现在就是使用黏性事件,observeSticky,后面跳转的Activity里面oncreat注册了接收,第一次进入可以收到消息,关闭Activity再次打开就没有消息回调了。大哥,我想一直可以收到之前那个黏性事件,谢谢哈
这个问题是因为加入了自动clear功能,当你退出那个activity的时候,你订阅的livedata由于没有observer被自动clear了,你重新进去的时候订阅的是一个新的livedata,所以没有消息。我后面会加一个控制是否自动clear,关闭了就没这个问题了
明白了 ,感谢 感谢解答。那冒昧问一下,下个版本大概多久哈
尽量今天晚上给出
老哥辛苦 为开源作出共享,开个赞赏哈。一杯咖啡,聊表心意
不用了哈,我还要谢谢你找出了这个问题:)
请使用1.4.3版本,默认配置即可
已使用,成功。感谢感谢
这个自动清除默认false,是不是黏性,非黏性都不会自动解除了?会对非黏性事件造成性能损耗吗
不会造成性能损耗,只是内存上的优化
我的理解是粘性事件和非粘性事件本来就该是独立的两类事件,粘性事件默认就不应该支持自动clear,而非粘性事件默认应该要支持自动clear会更好。是否考虑提供配套的postSticky - observeSticky。
如果那样的话应该需要两个池来分别存储黏性事件和非黏性事件的LiveData,这种需要两个不同的LiveData来实现 或者额外新增一个标识符来记录目前处于黏性事件的LiveData,在Remove的时候判断该标识符来决定是否清除
这个地方的思想和eventbus有些不一样,liveeventbus是让你在订阅的时候确定是以Sticky的方式订阅还是以普通的方式订阅,同一个消息既可以以Sticky的方式订阅,也可以以普通的方式订阅