解决postSticky多次收到通知问题

Eventbus中,当我们发送消息时,接收消息的界面还没加载或者没有注册Eventbus,这个场景我们为了在消息接收处能接收到消息,需要用到postSticky来发送粘性消息,普通的post是达不到上面想要的效果的。

发送代码如下:

EventBus.getDefault().postSticky(
    ShowMiniAnalyzeResultEvent(
        geometry as PolygonGeometry,
        AnalyzeType.ANALYZE_MANUAL.type,
        binding.mapView
    )
)

接收代码:

@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void showMiniAnalyzeResult(ShowMiniAnalyzeResultEvent event) {
......
}

现在接收的地方是能接收到了,但是一旦接收了,再次进入这个接收页面,还会执行接收事件,导致重复执行多次,还有如果该界面有多个接收事件,也会存在多个接收事件多次执行的情况。解决办法:在接收到消息后移除粘性事件

EventBus.getDefault().removeStickyEvent(event);

代码如下所示:

@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void showMiniAnalyzeResult(ShowMiniAnalyzeResultEvent event) {
    EventBus.getDefault().removeStickyEvent(event);
    ......    
}

猜你喜欢

转载自blog.csdn.net/u013023845/article/details/126972117