RxBus简单入门

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简单入门)