前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 中 RxBus 的使用

Android 中 RxBus 的使用

作者头像
码客说
发布2019-10-22 16:59:46
1.4K0
发布2019-10-22 16:59:46
举报
文章被收录于专栏:码客

前言

经常我们会有这样的需求,B页面操作后,要求A页面处理相关数据,像这样一般我们都是,要么B页面保留A页面的引用,要么使用广播,但是写起来还是想对麻烦的,用Rxbus就可以很容易和优雅的解决

使用

总的来说 我们要做的无外乎两件事:发送事件接受事件

但是接受事件的对象一定要先注册到Rxbus

添加引用

代码语言:javascript
复制
implementation 'com.hwangjr.rxbus:rxbus:2.0.0'

注册与取消注册

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    RxBus.get().register(this);
}

@Override
protected void onDestroy() {
    RxBus.get().unregister(this);
    super.onDestroy();
}

发送事件

发送事件有两种方式一种为

方式1 自动发送事件
代码语言:javascript
复制
@Produce(
        thread = EventThread.IO,
        tags = {
                @Tag("007")
        }
)
public ArrayList<String> produce02() {
    ArrayList<String> words = new ArrayList<>();
    words.add("好好学习");
    words.add("天天向上");
    return words;
}

可以看出我们加了Produce注解 加了这个注解就会在注册的时候发送事件 接收方 会根据 设置的Tag和返回的数据类型来调用相应的方法,于方法名无关

当然也可以不写tagsthread

  • 默认tagsrxbus_default_tag
  • 默认threadEventThread.MAIN_THREAD

例如

代码语言:javascript
复制
@Produce
public String produce01() {
    return "页面初始化加载!";
}
方式2 手动发送事件
代码语言:javascript
复制
RxBus.get().post("我是新数据");
RxBus.get().post("007","我是新数据(自定义Tag)");

接受事件

  • 加了Subscribe注解
  • 接受事件的方法也和方法名无关 只和tags传入的参数类型有关
  • 需要注意的是数据类型不能为interface类型 也就是说数据类型不能像List<String>这样,必须为ArrayList<String>这样的
  • 如果tags一样`类型也一样`的多个方法,都会接受到相应的事件

默认tagsthread

代码语言:javascript
复制
@Subscribe
public void subscribe02(String word) {
    Snackbar.make(getWindow().getDecorView(), word, Snackbar.LENGTH_SHORT)
            .setAction("Action", null).show();
}

自定义tagsthread

代码语言:javascript
复制
@Subscribe(
        thread = EventThread.MAIN_THREAD,
        tags = {
                @Tag("007")
        }
)
public void subscribe03(ArrayList<String> words) {
    Snackbar.make(getWindow().getDecorView(), words.toString(), Snackbar.LENGTH_SHORT)
            .setAction("Action", null).show();
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 使用
    • 注册与取消注册
      • 发送事件
        • 方式1 自动发送事件
        • 方式2 手动发送事件
      • 接受事件
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档