美文网首页
EventBus3.0 一

EventBus3.0 一

作者: 拾壹丶ban | 来源:发表于2016-10-19 11:10 被阅读55次

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

相关文章

网友评论

      本文标题:EventBus3.0 一

      本文链接:https://www.haomeiwen.com/subject/hqcxuttx.html