美文网首页
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