EventBus的坑和RxBus的使用

前面几篇文章因为不知道简书怎么写,结果格式乱七八糟的,现在才知道代码怎么插进来,汗~
英文状态下左上角的那个符号 ,打3个就是了 ```

记录下RxBus的坑······

很久很久以前·····
好吧,不是很久,之前有看到热门流行框架中有EventBus的框架用来传输数据,我一直以为是activity跳转间传输数据过去的,其实这事 intent 就能做,类的传输可以在bean那里加个 implements Serializable 就好,这个最简单了,不过Android中推荐的是用 Parcelable 。
后来我导入EventBus按照配置都配置好了,发现activity跳转的时候数据死活传不过去(就是像intent那样传)。

很久很久以后····
才发现EventBus是广播的方式,要先在一个已存在的activity或者fragment中注册监听,然后在随便一个地方发送广播,凡是已注册监听的地方就能接收到广播,然后嘛,数据都过来了,你爱干啥干啥···
因为一直都在用RxJava,这东西是这两年才火起来的,可是我在国内还没火的时候就开始用了,吐槽一下,那时候的坑真特么的多啊,这个到时候会记录篇纯使用的方法吧,毕竟现在网上的教程太多了(吐槽下当年教程真特么少),回到来,用RxJava的话就可以不用EventBus了,可以直接配置RxBus就好,一样的效果,还不用导包,上代码

public class RxBus {
    private static RxBus instance;
    private Vector<Subject> subjectList = new Vector<>();

    private RxBus() {
    }

    public static synchronized RxBus getInstance() {
        if (null == instance) {
            instance = new RxBus();
        }
        return instance;
    }

    public synchronized <T> Observable<T> register(@NonNull Object object) {
        Subject<T, T> subject = PublishSubject.create();
        subjectList.add(subject);
        return subject;
    }

    public synchronized void unregister(Object object) {
        subjectList.remove(object);
    }

    public void post(@NonNull Object content) {
        synchronized (this) {
            for (Subject subject : subjectList) {
                if (subject != null) {
                    subject.onNext(content);
                }
            }
        }
    }
}

这个是最简单版本,拿来传传字符还是挺好用的,复杂点的百度一下就好,因为我觉得这个勉强够用了(其实用到的地方不多)

然后是注册监听

private Observable<String> observable;

在onCreat里面配置一下

observable= RxBus.getInstance().register(this);
getRxBus();

接着是接收函数

    //RxBus 接收广播
    private void getRxBus(){
        observable.observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<String>() {
            @Override
            public void call(String msg) {
                keyword=msg;
                getData();
            }
        });
    }

最后别忘了在onDetory里面解除注册
RxBus.getInstance().unregister(this);

好了,要接收数据的地方配置好了,注意,要接收数据那么这个activity就不能finish掉(好像这是废话)

然后你可以跳在其它activity啊还是随便哪里使用
RxBus.getInstance().post("数据");
嗯,就这一句话发送广播,然后所有已注册监听的activity就都能收到广播了。

最后,使用的场景嘛,例如下:搜索的功能可以用,百度定位那里的结果也可以用,其它的自行脑补就好。

PS:RxBus的代码并不是我写的,我只是搬运工,忘了从哪里复制过来的···

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,394评论 25 707
  • EventBus主要用来消息/事件的传递,却能实现组建之间的解耦。对比其他的消息传递: ** 使用监听器接口(Li...
    spiritTalk阅读 8,276评论 4 25
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 面试题总结 通用 安卓学习途径, 寻找资料学习的博客网站 AndroidStudio使用, 插件使用 安卓和苹果的...
    JingBeibei阅读 1,645评论 2 21
  • 器材:尼康D5300 拍摄地:泸沽湖 图片版权归本人所有,图片授权于简书用于设置为app开屏图,一切版权纠纷与简书无关。
    流浪未完成阅读 153评论 0 1