RxJava实现RxBus

通过 RxJava 实现RxBus

1.添加依赖:

compile'io.reactivex:rxjava:1.0.14'

compile'io.reactivex:rxandroid:1.0.1'

2.新建rxbus文件:

public class RxBus {

private ConcurrentHashMap> subjectMaker=new ConcurrentHashMap<>();

private static RxBusinstanceRxBus;

public static synchronizedRxBusgetInstanceRxBus() {

if(null==instanceRxBus) {

instanceRxBus=newRxBus();

}

return instanceRxBus;

}

@SuppressWarnings("unchecked")

public Observable registerRxBus(@NonNullObject tag,@NonNullClass cls) {\

List subjectList =subjectMaker.get(tag);

if(null== subjectList) {

subjectList =newArrayList();

subjectMaker.put(tag,subjectList);

}

Subject subject =null;

subjectList.add(subject = PublishSubject.create());

return subject;

}

public void unRegisterRxBus(@NonNullObject tag,@NonNullObservable observable) {

List subjects =subjectMaker.get(tag);

if(null!= subjects) {

subjects.remove(observable);

if(!subjects.isEmpty()) {

subjectMaker.remove(tag);

}

}

}

public voidpost(@NonNullObject content) {

post(content.getClass().getName(),content);

}

@SuppressWarnings("unchecked")

public void post(@NonNullObject tag,Object content) {

List subjects =subjectMaker.get(tag);

if(!subjects.isEmpty()) {

for(Subject sub : subjects) {

sub.onNext(content);

}

}

}

}

3.通过这个 bus 发布一个事件:

RxBus.getInstanceRxBus().post("add","hello");

4.fragment,service里面接受一个string类型的值:

Observable addObservable = RxBus.getInstanceRxBus().registerRxBus("add",String.class);

addObservable.observeOn(AndroidSchedulers.mainThread()).subscribe(newAction1() {

@Override

public voidcall(String s) {

//todo

}

});

5.解除rxbus:

RxBus.getInstanceRxBus().unRegisterRxBus("add",addObservable);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,890评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • 注:本系列文章主要用于博主个人学习记录,本文末尾附上了一些较好的文章提供学习。转载请附 原文链接RxJava学习系...
    黑丫山上小旋风阅读 2,163评论 1 5
  • 夜深的时候,总会怀念那时候一群人热热闹闹的过往,不知不觉地便已经失眠。 毕业,找工作、实习、适应新环境...
    谨兮阅读 342评论 0 1
  • S是个凹凸有致的小姑娘。别多想,是我朋友的妹妹。 小姑娘为人很好,进公司之后,时常给同部门的小伙伴带点零食。有人生...
    自制力才是超能力阅读 390评论 1 7