美文网首页RxJavarx
RxBus简单入门

RxBus简单入门

作者: lavzchen | 来源:发表于2016-12-13 16:13 被阅读1314次

    RxBus开源地址:https://github.com/AndroidKnife/RxBus

    参考文章: 1. Rxbus事件交互 

                    2. 关于RxBus的一些使用心得

    主要作用

     使用注解的方式实现页面间/页面内传值,可以使用tag对消息进行标记,可以指定线程。

    实践使用

     参照RxBus官方文档,将RxBus引入工程

     STEP1 :gradle 引入依赖 compile 'com.hwangjr.rxbus:rxbus:1.0.3'

    如果工程中使用了 AndroidKnife/Utils/timber,需要将依赖修改成如下:

           compile ('com.hwangjr.rxbus:rxbus:1.0.3') {

                exclude group: 'com.hwangjr.utils', module: 'timber'

            }

    STEP2: 直接使用架包提供的 com.hwangjr.rxbus.RxBus 或 自己写一个RxBus单例(官方推荐),实现如下:

    public static final class RxBus {

            private static Bus sBus;

           public static synchronized get() {

                   if (sBus == null) {

                         sBus = new Bus();

                   }

                  return sBus;

           }

    }

    STEP3: 在Activty/Fragment 中使用RxBus,这里的this不是特指Activity,所以在Fragment中不需要用getActivity();(参考2)

        在onCreate()中调用RxBus.get().register(this);    进行注册操作。

        在onDestory()中进行RxBus.get().unregister(this);     解绑操作。

    STEP4: 在任何需要监听处理事件的地方,添加如下代码,实现收到消息的处理事件:

    @Subscribe

    public void Function(String param) {  // 这里也可以写成(String tag, Object param)

              // TODO

    }

    STEP5: 在需要发送消息的地方使用 RxBus.get().post(param); or RxBus.get().post(tag, param); // post发消息是主线程


    PS:还有一种使用注解发消息的方式,这种方式貌似只适用于在页面初始化的时候,不能手动控制,但是可以指定线程和tag

    例:

    监听实现

    //接收一个列表参数,并且限制这个接收线程是IO,标记为BusAction.EAT_MORE ,标记需要和发送者一致,线程不要需要

    @Subscribe(

        thread = EventThread.MAIN_THREAD,

        tags = {  @Tag(BusAction.EAT_MORE)  }

    )

    public void receiveFunction(Object param) {

          // TODO

    }

    消息发送

    @Produce

    public Object sendFunction() {

           // TODO

           return param;

    }

    相关文章

      网友评论

        本文标题:RxBus简单入门

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