欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

EventBus3.0 一

程序员文章站 2022-07-14 16:06:51
...

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);

转载于:https://www.jianshu.com/p/2bc0e2e7ac59