当前位置: 首页 > news >正文

深圳横岗网站建设/seo的研究对象

深圳横岗网站建设,seo的研究对象,阜宁网站制作服务,icp ip 网站备案以前的项目中使用的是EventBus来实现事件的通知和订阅,RxJava2发布之后就使用了新的方式:RxBus,减少添加的依赖库。如果有什么错误的地方,或者有更好的建议的欢迎大家在下边留言,互相学习。 没有背压处理(…

以前的项目中使用的是EventBus来实现事件的通知和订阅,RxJava2发布之后就使用了新的方式:RxBus,减少添加的依赖库。如果有什么错误的地方,或者有更好的建议的欢迎大家在下边留言,互相学习。

没有背压处理(Backpressure)的 RxBus

import android.support.annotation.NonNull;import io.reactivex.Observable;
import io.reactivex.subjects.PublishSubject;
import io.reactivex.subjects.Subject;public class RxBus {private final Subject<Object> mBus;private RxBus() {mBus = PublishSubject.create().toSerialized();}public static RxBus getInstance() {return Holder.BUS;}public void post(@NonNull Object obj) {mBus.onNext(obj);}public <T> Observable<T> register(Class<T> tClass) {return mBus.ofType(tClass);}public Observable<Object> register() {return mBus;}public boolean hasObservers() {return mBus.hasObservers();}public void unregisterAll() {//会将所有由mBus生成的Observable都置completed状态,后续的所有消息都收不到了mBus.onComplete();}private static class Holder {private static final RxBus BUS = new RxBus();}}

有背压(Backpressure)处理的RxBus:

import android.support.annotation.NonNull;import io.reactivex.Flowable;
import io.reactivex.processors.FlowableProcessor;
import io.reactivex.processors.PublishProcessor;public class RxBus {private final FlowableProcessor<Object> mBus;private RxBus() {mBus = PublishProcessor.create().toSerialized();}private static class Holder {private static RxBus instance = new RxBus();}public static RxBus getInstance() {return Holder.instance;}public void post(@NonNull Object obj) {mBus.onNext(obj);}public <T> Flowable<T> register(Class<T> clz) {return mBus.ofType(clz);}public Flowable<Object> register() {return mBus;}public void unregisterAll() {//会将所有由mBus生成的Flowable都置completed状态后续的所有消息都收不到了mBus.onComplete();}public boolean hasSubscribers() {return mBus.hasSubscribers();}
}

在发送消息的activity中代码:

RxBus.getInstance().post("111");

在接收消息的activity中代码:

RxBus.getInstance().register(String.class).subscribe(new Consumer<String>() {@Overridepublic void accept(String integer) throws Exception {toast(integer);}
});

像上边直接传基本数据类型在实际项目中不推荐这样使用。我们可以自定义消息类(或者直接传JavaBean),例如:

public class MsgEvent<T> {private T data;private String mMsg;private int type;private int request;public MsgEvent(T data) {this.data = data;}public MsgEvent(int request, int type, String msg) {this.type = type;this.mMsg = msg;this.request = request;}public String getMsg(){return mMsg;}public int getType(){return type;}public int getRequest(){ return request; }public T getData(){return data;}}

在发送消息的时候,自己定义消息:

RxBus.getInstance().post(new MsgEvent(11,45,"今天天气很好"));

在接收消息的时候,选择性接收消息:

        RxBus.getInstance().register(MsgEvent.class).subscribe(new Consumer<MsgEvent>() {@Overridepublic void accept(MsgEvent msg) throws Exception {if (msg.getRequest() == 11) {tv.setText(msg.getMsg());}}});

这里说明一下unregisterAll()方法,这个方法一旦调用了以后,所有的消息都是收不到的,所以如果要调用的话,建议在退出程序的Activity里面调用。

public void unregisterAll() {//会将所有由mBus生成的Observable都置completed状态,后续的所有消息都收不到了mBus.onComplete();}

效果图:
这里写图片描述

点击下载源码

http://www.lbrq.cn/news/9451.html

相关文章:

  • win10系统可以做网站搭建/营销培训课程2022
  • 代驾小程序源码/优化设计方法
  • 餐饮品牌网站建设/每日新闻最新消息
  • 可以做网站的域名后缀/百度浏览器网址是多少
  • 在境外做色情网站/百度高级搜索网址
  • 中山专业网站建设价格/石嘴山网站seo
  • 三亚做网站哪家好/免费网站建设seo
  • javaweb社交网站开发/搜狐综合小时报2022113011
  • 个人网站做外链方法/如何优化关键词搜索排名
  • 传奇页游平台/免费seo工具大全
  • 郑州专业做淘宝网站建设/关于市场营销的100个问题
  • 青岛崂山区网站建设/怎么从网上找客户
  • 百度怎么做网站广告/汕头网站排名优化
  • 用点心做点心官方网站/2022年十大网络流行语发布
  • 怎样在工商局网站做公示/怎么优化百度关键词
  • 加强网站硬件建设方案/seo优化的主要内容
  • 2018网站建设涉及/企业培训公司
  • 怎么做网站分站/品牌营销策略有哪些方法
  • 免费推广网站入口2023燕/舆情分析系统
  • 春播网站是谁做的/seo搜索引擎招聘
  • 辽源网站优化/seo是什么
  • 许昌建网站/广东佛山疫情最新情况
  • 山西建设工程网/seo排名优化排行
  • 柳江网站建设/女孩短期技能培训班
  • 榆次建设局网站/优化seo方法
  • 网站开发建设付款方式/营销策略有哪些方法
  • 学平面设计哪个学校好/seo系统源码出售
  • 哪个网络公司做网站好/深圳整站seo
  • 服务器ip地址怎么查/太原seo招聘
  • 纯静态网站 搜索功能/搜索引擎平台
  • 聊聊数据和功能测试面临的挑战有哪些?
  • uniapp写好的弹窗组件
  • [Linux入门] Linux 账号和权限管理入门:从基础到实践
  • docker搭建freeswitch实现点对点视频,多人视频
  • 【科研绘图系列】R语言绘制世界地图
  • 云手机常见问题解析:解决延迟、掉线等困扰