EventBus的配置&事件的优先级&使用索引

本文介绍了EventBus的配置、事件优先级以及如何使用索引来优化性能。讲解了如何自定义EventBus实例,设置事件优先级以控制事件传递顺序,并详细阐述了配置索引的步骤和使用方法,同时提醒在代码混淆时的注意事项。
摘要由CSDN通过智能技术生成

简介

由前面几篇我们学习了EventBus的使用、特性等等,这篇我们主要讲解的是我们如何在EventBus中如何自定义配置相关事项。还有设置事件的优先级案例分析。

EventBus-Android的发布 - 订阅

进入代码

事例说明

在EventBus的官方文档中也提到了EventBusBuilder类配置EventBus的各个方面事项。例如:以下是如何构建一个在发布的事件没有订阅者的情况下保持静态的EventBus:

EventBus eventBus = EventBus.builder()
    .logNoSubscriberMessages(false)
    .sendNoSubscriberEvent(false)
    .build();

另一个例子是当订阅者抛出异常时失败:

EventBus eventBus = EventBus.builder().throwSubscriberException(true).build();

配置默认的EventBus实例
使用EventBus.getDefault()是从应用程序中的任何位置获取共享EventBus实例的简单方法。EventBusBuilder还允许使用installDefaultEventBus ()方法配置此默认实例 。

例如,可以配置默认的EventBus实例以重新抛出订阅者方法中发生的异常。但是,仅限于DEBUG构建,因为这可能会使应用程序在例外情况下崩溃:

EventBus.builder().throwSubscriberException(BuildConfig.DEBUG).installDefaultEventBus();

如何使用

优先级

优先级priority使用

接下来我们来学习EventBus的优先级priority表示。priority来表示优先级,数值越大,优先级越高。在同一传递线程(ThreadMode)中,较高优先级的订户将在优先级较低的其他订户之前接收事件。默认优先级为0。

  • 注:优先级不会影响具有不同ThreadModes的订阅者的传递顺序!
@Subscribe(priority = 1);
public void onEvent(MessageEvent event) {
   //do something
}

取消事件传递

我们知道事件的优先级越高接收的数据最快,所以当优先级不想分发事件给低级别的事件时,可以使用cancelEventDelivery (Object event)这里的参数是订阅的实体参数。如下代码。

  • 注:当优先级更高的想取消事件传递时,只有当threadMode = ThreadMode.POSTING处于此状态才能取消事件传递有效。其他不行
@Subscribe(priority = 1000,threadMode =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值