EventBus之优先级和事件取消

优先级和事件取消(Priorities and Event Cancellation)

虽然EventBus的大多数用例不需要优先级或事件取消,但在某些特殊情况下,它们可能会派上用场。例如,如果应用程序在前台,事件可能会触发一些UI逻辑,但如果应用程序当前对用户不可见,则会做出不同的反应。

订阅者优先级:

您可以通过在注册期间为订阅者提供优先级(provide a priority)来更改事件交付的顺序。

  @Subscribe(priority = 1)
    public void refreshMessage(EventData eventData) {
        Log.i(TAG, "method:refreshMessage#eventData.getUserName() + ":\n\n" + eventData.getMessage());
    }

在同一个交付线程(ThreadMode)中,优先级较高的订阅者将先于优先级较低的订阅者接收事件。默认优先级为0,"priority" 的值越大,优先级越高。

注意:优先级不影响不同ThreadMode的订阅者(subscriber)之间的交付顺序!

取消事件交付(Cancelling event delivery)

您可以通过从订阅方的事件处理方法调用 cancelEventDelivery(Object event) 来取消事件交付过程。任何后续的事件交付将被取消,后续订阅者将不会接收该事件。

    // Called in the same thread (default)
    @Subscribe
    public void refreshMessage(EventData eventData) {
        // Process the event
        Log.i(TAG, "method:refreshMessage#eventData.getUserName() + ":\n\n" + eventData.getMessage());      
        ...
        // Prevent delivery to other subscribers
        EventBus.getDefault().cancelEventDelivery(event) ;
    }

事件通常被优先级更高的订阅者取消。取消仅限于在发布线程(ThreadMode.PostThread)中运行的事件处理方法。

GitHub地址

由于作者水平有限,语言描述及代码实现中难免有纰漏,望各位看官多提宝贵意见!

Hello , World !

感谢所有!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

windfallsheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值