EventBus初次使用

EventBus使用步骤

  1. 订阅注册事件,使用EventBus.getDefault().register 进行订阅事件。
  2. post事件,EventBus.getDefault().post 发送事件,可传入任意类型的参数。
  3. 添加事件响应,有4种模式,EventBus可以向不同的线程中发布事件,在ThreadMode 枚举中定义了4个线程,只需要在事件响应函数名称“onEvent”后面添加对应的线程类型名称

    PostThread:对应  public void onEvent,事件响应函数和事件发布在同一线程中执行。这个是默认值,这样可以避免线程切换。

    MainThread:对应 public void onEventMainThread,事件响应函数会在Android应用的主线程(大部分情况下都是UI线程)中执行。

    BackgroundThread:对应  public void onEventBackgroundThread,事件响应函数会在一个后台线程中执行。如果事件发布函数不是在主线程中,则会立即在事件发布线程中执行响应函数。如果事件发布函数在主线程中,EventBus则会在唯一的一个后台线程中按照顺序来执行所有的后台事件响应函数。
    上面的3种事件响应函数,应该能够很快的执行完,不然的话会阻塞各自的事件发布。

    Async:对应  public void onEventAsync事件响应函数在另外一个异步线程中执行。该线程和发布线程、主线程相互独立。如果事件响应函数需要较长的时间来执行,则应该使用该模式,例如 网络访问等。需要注意的是,由于系统并行的限制,应该避免在同一时间触发大量的异步线程。 EventBus使用一个线程池来提高线程的效率。
  4. 取消订阅,使用EventBus.getDefault().unregister。
关键代码:

由代码可以看出,其内部通过获取onEvent开头的方法,截取onEvent后的串判断ThreadMode。


你可能感兴趣的:(EventBus)