Fork me on GitHub

EventBus实践

EventBus中的四种订阅函数(接收事件)

  • OnEvent: 事件在哪个线程发出,OnEvent就在哪个线程中执行,但是在OnEvent中不能执行耗时操作。
  • onEventMainThread: 不管事件在哪个线程发出,onEventMainThread都会在UI线程执行。
  • onEvnetBackground: 如果事件从UI线程发出,那么onEvnetBackground会在子线程中执行,如果事件从子线程发出,那么onEvnetBackground就在该子线程执行。
  • onEventAsync: 无论事件从哪个线程发出,onEventAsync都会创建新的子线程执行。

在EventBus3.0之前事件处理的方法只能限定于onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,他们分别代表四种线程模型。而在EventBus3.0之后,事件处理的方法可以随便取名,但是需要添加一个注解@Subscribe,并且要指定线程模型(默认为POSTING)

接收事件:

1.注册过eventbus的activity须实现订阅方法
@Subcrible(threadMode)
public void HandleEvent(EventType event){
….//dosomething
}

2.接收事件方法可以类似重载构造,eventbus会根据参数不同自动调用。
例如:
HandleEvent(EventType event1)
HandleEvent(EventType event1,EventType event2)
HandleEvent(EventType event1,EventType event2,EventType event3)

三个核心方法原理:

register

此处输入图片的描述

post

此处输入图片的描述

unregister

此处输入图片的描述