EventBus3.0 使用
- EventBus基本使用
- 发送事件
- 注册
- 接收(main posting background)
- EventBus3.0 加速模式
- 添加依赖
- build项目
<p>
发送事件
1.发送事件 ===》主线程
EventBus.getDefault().post("消息main");
2.发送事件 ===》子线程
new Thread(new Runnable() { @Override public void run() { EventBus.getDefault().post("消息son"); }}).start();
3.发送事件 ===》粘性
EventBus.getDefault().postSticky("消息 Sticy");
注册
1.要想接收到消息,就要先注册eventbus
2.注册代码
EventBus.getDefault().register(this);
接收消息
1.接收===》mian
@Subscribe(threadMode = ThreadMode.mian,sticky = true) public void onBusMain(String message){ Log.i("bus",message+" , mian, "+Thread.currentThread().getName()); }
2.接收===》POSTING
@Subscribe(threadMode = ThreadMode.POSTING,sticky = true) public void onBusPosting(String message){ Log.i("bus",message+" , posting , "+Thread.currentThread().getName());} }
3.接收===》BACKGROUND
@Subscribe(threadMode = ThreadMode.BACKGROUND,sticky = true) public void onBusBackground(String message){ Log.i("bus",message+" , BACKGROUND, "+Thread.currentThread().getName()); }
4.接收===》ASYNC
@Subscribe(threadMode = ThreadMode.ASYNC,sticky = true) public void onBusAsync(String message){ Log.i("bus",message+" , ASYNC, "+Thread.currentThread().getName()); }
注意:
1. 接收的事件类型要和发送的事件 对上 String==String Obj==Obj
2. 在接收的注解这 sticky = true,代表接收粘性事件
3. 粘性事件 sticky,可以延时接收
4. 事件接收优先级 priority = 0 、1、2、3,0优先级最高
5. 拦截事件 EventBus.getDefault().cancelEventDelivery("消息son"); 只能在 posting 线程中拦截
6. 移除粘性事件
6.1 移除指定的粘性事件 EventBus.getDefault().removeStickyEvent("消息 Sticy");
6.2 一处全部的粘性时间 EventBus.getDefault().removeAllStickyEvents();
7. 接收完消息 一定要注销 EventBus.getDefault().unregister(this);
网友评论