首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 设计模式最佳实践:六、让我们开始反应式吧

它们被称为“可连接的”可观察对象,RxJava 拥有能够创建此类可观察对象的操作符。 RxJava2.0 引入了一种新的可观察类型,称为Flowable。...联合运算符 通过调用以下方法之一,组合来自两个或多个可观测对象的最新发射: combineLatest:发出聚合每个源的最新的项 withLatestFrom:将给定的可观察对象合并到当前实例 下面的示例...,将两个可观察对象发出的项目加入到组 下面的示例使用join组合两个可观察对象,一个每 100 毫秒触发一次,另一个每 160 毫秒触发一次,并每 55 毫秒从第一个获取一个,每 85 毫秒从第二个获取一个...我们将展示 RxJava 在实时处理从多个传感器接收到的温度的用法。...在下一章,我们将学习最常用的反应式编程模式,以及如何在代码应用它们。

1.8K20

十六、Hystrix断路器:初体验及RxJava简介

在分布式系统,单个应用通常会有多个不同类型的外部依赖服务,内部通常依赖于各种RPC服务(当然也可能是Http实现),外部则依赖于各种HTTP服务。...这里有的一说的两个核心依赖项: Archaius:配置管理库。这不就是该系列前十几篇文章讲述的重点麽,这里就用到了,很激动有木有 rxjava:响应式编程库。...executor):用户自己指定一个线程调度器,由此调度器来控制任务的执行策略 Schedulers.test():用于你debug的时候使用 ---- 操作符 RxJava操作符:其实质是函数式编程的高阶函数...distinct: timeout: distinctUntilChanged: throttleFirst: throttleWithTimeout/debounce: … 组合/合并: concat:按顺序连接多个...不同于concat,merge不是按照添加顺序连接,而是按照时间线来连接

2.2K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Carson带你学Android:什么时候应该使用Rxjava?(开发场景汇总)

    的变换操作符FlatMap()实现嵌套网络请求 具体实现 Android RxJava 实际应用讲解:网络请求嵌套回调 3.5 从磁盘 / 内存缓存 获取缓存数据 需求场景 功能说明...对于从磁盘 / 内存缓存 获取缓存数据 的功能逻辑如下: 具体实现 Android RxJava 实际应用讲解:从磁盘 / 内存缓存 获取缓存数据 3.6 合并数据源 需求场景...功能说明 即,同时向2个数据源获取数据 -> 合并数据 -> 统一展示到客户端 具体实现 Android RxJava 实际应用讲解:合并数据源 3.7 联合判断 需求场景 需要同时对多个事件进行联合判断...冲突 被观察者 发送事件速度太快,而观察者 来不及接收所有事件,从而导致观察者无法及时响应 / 处理所有发送过来事件的问题,最终导致缓存区溢出、事件丢失 & OOM ,点击按钮事件:连续过快的点击按钮...通过通过订阅(subscribe)连接观察者和被观察者 @Override public void onSubscribe

    91920

    Android RxJava实际应用案例讲解:使用RxJava的最佳开发场景

    的变换操作符FlatMap()实现嵌套网络请求 具体实现 Android RxJava 实际应用讲解:网络请求嵌套回调 3.5 从磁盘 / 内存缓存 获取缓存数据 需求场景 功能说明...对于从磁盘 / 内存缓存 获取缓存数据 的功能逻辑如下: 具体实现 Android RxJava 实际应用讲解:从磁盘 / 内存缓存 获取缓存数据 3.6 合并数据源 需求场景 功能说明...即,同时向2个数据源获取数据 -> 合并数据 -> 统一展示到客户端 具体实现 Android RxJava 实际应用讲解:合并数据源 3.7 联合判断 需求场景 需要同时对多个事件进行联合判断...冲突 被观察者 发送事件速度太快,而观察者 来不及接收所有事件,从而导致观察者无法及时响应 / 处理所有发送过来事件的问题,最终导致缓存区溢出、事件丢失 & OOM ,点击按钮事件:连续过快的点击按钮...通过通过订阅(subscribe)连接观察者和被观察者 @Override public void onSubscribe(Disposable d)

    1.3K50

    RxJava 完全解析 是时候来进阶 RxJava 了!

    什么是RxJavaRxJava用于反应式编程。在反应式编程,消费者在数据进入时作出反应。反应式编程允许事件更改传播给已注册的观察者。 我们知道RxJava是Android项目最重要的库。...学习 RxJava ---- 通过范例学习 RxJava 因为 通过实例学习是最好的学习方式。 它包含许多例子,例如: 如何在RxJava中使用运算符? 如何在RxJava中进行联网?...如何在RxJava实现RxBus(EventBus)? 如何用RxJava实现分页? 从这里学习。...---- 通过示例了解RxJava Zip运算符 Zip运算符允许我们一次从多个observable获取结果。此运算符可帮助您并行运行所有任务,并在完成所有任务后在单个回调返回所有任务的结果。...---- 了解RxJava延迟运算符 在这篇博客,我们将学习RxJava Defer Operator。我们将根据用例了解何时使用Defer运算符。

    1.1K20

    Carson带你学Android:RxJava线程控制(含实例讲解)

    2.1 背景 在 RxJava模型,被观察者 (Observable) / 观察者(Observer)的工作线程 = 创建自身的线程 即,若被观察者 (Observable) / 观察者(Observer...应用到 RxJava模型,可理解为: 被观察者 (Observable) 在 子线程 中生产事件(如实现耗时操作等等) 观察者(Observer)在 主线程 接收 & 响应事件(即实现UI操作...() & observeOn()简介 作用 线程控制,即指定 被观察者 (Observable) / 观察者(Observer) 的工作线程类型 线程类型 在 RxJava,内置了多种用于调度的线程类型...3.2 具体使用 具体是在 (上述步骤3)通过订阅(subscribe)连接观察者和被观察实现 // Observable.subscribeOn(Schedulers.Thread...最后再通过订阅(subscribe)连接观察者和被观察者 测试结果 特别注意 1.

    80720

    Android RxJava:一步步带你源码分析 RxJava

    本系列文章主要基于 Rxjava 2.0 接下来的时间,我将持续推出 Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho...Observer) & 定义响应事件的行为 步骤3:通过订阅(subscribe)连接观察者和被观察者 2.2 实例讲解 // RxJava的链式操作 Observable.create...特别注意:涉及多个观察者(Observable)的发送事件顺序 具体描述 ?...实例讲解 /** * 存在涉及多个观察者(Observable)的情况 **/ // 创建第1个被观察者(Observable1) Observable.create(new...总结 本文主要对 RxJava2 的订阅流程进行了源码分析 接下来的时间,我将持续推出 Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注

    57710

    Android RxJava:这是一份面向初学者的RxJava使用指南

    本系列文章主要基于 Rxjava 2.0 接下来的时间,我将持续推出 Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho...通过通过订阅(subscribe)连接观察者和被观察者 // 3....所以,一般建议使用这种基于事件流的链式调用方式实现RxJava。 特别注意 RxJava 2.x 提供了多个函数式接口 ,用于实现简便式的观察者模式。具体如下: ?...通过通过订阅(subscribe)连接观察者和被观察者 // 3....额外说明 4.1 观察者 Observer的subscribe()具备多个重载的方法 public final Disposable subscribe() {} // 表示观察者不对被观察者发送的事件作出任何响应

    43550

    初识RxJava 2 for Android

    这些数据流不一定必须是传统数据类型的形式,因为 RxJava **把所有的一切(变量、属性、缓存甚至用户输入包括点击和滑动)都当做数据流(Stream**)。...为创建这种数据流的工作流和响应它们的对象,RxJava 扩展了 Observer 设计模式(观察者模式)。...由于观察者无法观察到数据是怎样创建的,可以随意定制 Observable 来创建数据。...例如,可以组合来自多个流的数据,过滤新合并的流,然后用生成的数据作为后续数据流的输入。记住在 RxJava 几乎所有内容都被视为数据流,因此甚至可以把这些操作符用于非传统的“数据”,例如点击事件。...例如,主流社交网络App需要不断监听输入的点赞、评论和好友请求,同时在后台管理网络连接,并在用户点击或滑动屏幕时立即响应。

    1.1K60

    Android:手把手带你入门神秘的 Rxjava

    Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记!!...通过通过订阅(subscribe)连接观察者和被观察者 // 3....所以,一般建议使用这种基于事件流的链式调用方式实现RxJava。 特别注意 RxJava 2.x 提供了多个函数式接口 ,用于实现简便式的观察者模式。具体如下: ?...额外说明 7.1 观察者 Observer的subscribe()具备多个重载的方法 public final Disposable subscribe() {} // 表示观察者不对被观察者发送的事件作出任何响应...总结 本文主要对 Rxjava 的入门知识进行讲解,包括基本介绍、原理 & 具体使用等 接下来,我将持续推出 Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等

    61040

    Android:这是一篇 清晰 易懂的Rxjava 入门教程

    Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记!!...基于事件流、实现异步操作的库 作用 实现异步操作 类似于 Android的 AsyncTask 、Handler作用 由于 RxJava的使用方式是:基于事件流的链式调用,所以使得 RxJava...通过通过订阅(subscribe)连接观察者和被观察者 // 3....所以,一般建议使用这种基于事件流的链式调用方式实现RxJava。 特别注意 RxJava 2.x 提供了多个函数式接口 ,用于实现简便式的观察者模式。具体如下: ?...额外说明 7.1 观察者 Observer的subscribe()具备多个重载的方法 public final Disposable subscribe() {} // 表示观察者不对被观察者发送的事件作出任何响应

    82110

    RxJava && Agera 从源码简要分析基本调用流程(2)

    4.其他角色 Subject Subject在Rx系列是一个比较特殊的角色,它继承了Observable的同时也实现了Observer接口,也就是说它既可作为观察者,也可作为被观察者,他一般被用来作为连接多个不同...光这么说可能还是很模糊,我们举个《RxJava Essentials》的例子: [image.jpg] 我们通过create()创建了一个PublishSubject,观察者成功订阅了这个subject...(RxJava的出现慢慢让Otto退出了舞台,现在Otto的Repo已经是Deprecated状态了,而EventBus依旧坚挺)基于RxJava观察订阅取消的能力和PublishSubject的功能...同样也是基于观察者模式,Agera和RxJava的角色分类大致相似,在Agera,主要角色有两个:Observable(被观察者)、Updatable(观察者)。...返回RFrequency onUpdatesPerLoop() 在每一个Looper Thread loop若有来自多个Event Source的update()处理时,只需开启一个数据处理流。

    10.4K10

    这是一篇清晰易懂的 Rxjava 入门教程

    Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记!!...所以,一般建议使用这种基于事件流的链式调用方式实现RxJava。 特别注意 RxJava 2.x 提供了多个函数式接口 ,用于实现简便式的观察者模式。...'io.reactivex.rxjava2:rxandroid:2.0.1' 步骤2:直接在MainActivity.java实现下述步骤 1....额外说明 7.1 观察者 Observer的subscribe()具备多个重载的方法 public final Disposable subscribe() {} // 表示观察者不对被观察者发送的事件作出任何响应...总结 本文主要对 Rxjava 的入门知识进行讲解,包括基本介绍、原理 & 具体使用等 接下来,我将持续推出 Android Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等

    6.6K71

    Carson带你学Android:图文详解RxJava背压策略

    前言 Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。 本文主要讲解的是RxJava的 背压控制策略,希望你们会喜欢。...解决方案 & 思想主要如下: 示意图如下 与 RxJava1.0 中被观察者的旧实现 Observable 对比 好了,那么上图中在RxJava 2.0观察者模型,Flowable到底是什么呢?...它其实是RxJava 2.0观察者的一种新实现,同时也是背压策略实现的承载者 请继续看下一节的介绍:背压策略的具体实现 - Flowable 4....(a)的a // 该request(a)则是措施1讲解的方法,作用 = 设置 ....// 仅贴出关键代码 } 每个线程的requested()的返回 = 该线程的...反向控制的原理是:通过RxJava内部固定调用被观察者线程的request(n) 从而 反向控制被观察者的发送事件速度 那么该什么时候调用被观察者线程的request(n) & n 的该是多少呢?

    1.2K10

    Android: RxJava操作符 详细使用手册

    该例子将结合Retrofit 和 RxJava 进行讲解 具体请看文章:Android RxJava 实际应用讲解:网络请求嵌套回调 3.3 组合 / 合并操作符 作用 组合 多个观察者(...Observable) & 合并需要发送的事件 应用场景 组合多个观察者 合并多个事件 发送事件前追加发送事件 统计发送事件数量 类型 根据上述应用场景,常见的组合 / 合并操作符 主要有:...实际应用讲解:联合判断 3.4 功能性操作符 作用 辅助被观察者(Observable) 在发送事件时实现一些功能性需求 实际应用场景 连接(订阅) 观察者 & 被观察者 线程调度(切换) 错误处理...Retrofit 和 RxJava 进行讲解 3.6 条件 / 布尔操作符 作用 通过设置函数,判断被观察者(Observable)发送的事件是否符合条件 类型 RxJava2,条件.../ 布尔操作符的类型包括: 具体操作符详解 Android RxJava:详解 条件 / 布尔操作符 至此,关于RxJava 2 的操作符讲解完毕。

    1.4K20

    Carson带你学Android:RxJava操作符教程

    操作符详解 注:在使用RxJava 2操作符前,记得在项目的Gradle添加依赖: dependencies { compile 'io.reactivex.rxjava2:rxandroid...多个观察者(Observable) & 合并需要发送的事件 应用场景 组合多个观察者 合并多个事件 发送事件前追加发送事件 统计发送事件数量 类型 根据上述应用场景,常见的组合 /...该例子将结合Retrofit 和 RxJava 进行讲解 Android RxJava 实际应用讲解:合并数据源 Android RxJava 实际应用讲解:从磁盘 / 内存缓存 获取缓存数据 Android...RxJava 实际应用讲解:联合判断 3.4 功能性操作符 作用 辅助被观察者(Observable) 在发送事件时实现一些功能性需求 实际应用场景 连接(订阅) 观察者 & 被观察者 线程调度...类型 RxJava2,条件 / 布尔操作符的类型包括: 具体操作符详解 Android RxJava:详解 条件 / 布尔操作符 至此,关于RxJava 2 的操作符讲解完毕。

    65320
    领券