RxJava 教程第四部分:并发 之线程调度

rain | 移动 | 2016-04-25
由于 Rx 目标是用在异步系统上并且 Rx 支持多线程处理,所以很多 Rx 开发者认为默认情况下 Rx 就是多线程的。 其实实际情况不是这样的,Rx 默认是单线程的。 除非你明确的指定线程,否则所有 onNext/onError/onCompleted 以及各个操作函数的调用都是在同一个线程中完成的。例如下面的示例: [crayon-58b3f2cb63676718483603/] 结果: [crayon-58b3f... [阅读全文]

RxJava 教程第三部分:驯服数据流之自定义操作函数

rain | 移动 | 2016-04-25
RxJava 教程第三部分:驯服数据流之自定义操作函数
RxJava 提供了很多操作函数。加上各种重载函数,一共有 300 多个操作函数。这些函数中只有很少一部分是核心的操作函数,离开这些核心的函数根本就没法使用 RxJava 了。其他的大部分函数只是一些便捷函数,方便开发者使用,并且他们的名字基本都说明了他们的用法。比如 如果操作函数 source.First(user -> user.isOnline()) 不存在,则我们依然可以使用 ... [阅读全文]

RxJava 教程第三部分:驯服数据流之 hot & cold Observable

rain | 移动 | 2016-04-25
RxJava 教程第三部分:驯服数据流之 hot & cold Observable
Observable 数据流有两种类型:hot 和 cold。这两种类型有很大的不同。本节介绍他们的区别,以及作为 Rx 开发者应该如何正确的使用他们。 Cold observables 只有当有订阅者订阅的时候, Cold Observable 才开始执行发射数据流的代码。并且每个订阅者订阅的时候都独立的执行一遍数据流代码。 Observable.interval 就是一个 Cold Observable。每一个订... [阅读全文]

RxJava 教程第三部分:驯服数据流之 时间平移

rain | 移动 | 2016-04-25
RxJava 教程第三部分:驯服数据流之 时间平移
Rx 最大的特征之一就是无法预测何时会有数据发射。有些 Observable 会同步的即可发射所有的数据,比如 range ,有些按照一定的时间间隔发射数据、有些根本无法确定到底何时发射数据。例如,鼠标移动时事件和 UDP 数据包到达的时刻。我们需要合适的工具来处理这些无法确定何时发射的事件。 Buffer 缓存 Buffer 可以收集数据并缓存起来,等缓存到固定的... [阅读全文]

Android 专用响应式编程框架 — Agera

rain | 移动 | 2016-04-25
在响应式编程(Reactive programming)这么热的今天,Google 也耐不住寂寞了,周末 Google 开源了他们在 Google Play Movies 项目中内部使用的 Android 专用的响应式编程框架 -- Agera。 Agera 和 RxJava 没有任何关系,只是响应式编程在 Android 平台上的轻量级实现。 下面是一个示例: [crayon-58b3f2cb74cec695021415/] 更多详情请参考官方网站:... [阅读全文]
ė 0,

RxJava 教程第三部分:驯服数据流之 组合数据流

rain | 移动 | 2016-04-22
RxJava 教程第三部分:驯服数据流之 组合数据流
组合数据流 到目前为止我们介绍了如何创建数据流以及如何把数据流中的数据转换成我们需要的数据。然而,大部分应用都需要处理多个数据源的数据。需要一种把多个数据源组合一起的方法。在前面的介绍中,也看到了一些数据流会使用多个 Observable。本节介绍如何把多个数据源的数据组合为一个数据源的操作函数。 Concatenation 一个数据流发射完后继续... [阅读全文]

RxJava 教程第三部分:驯服数据流之 高级错误处理

rain | 移动 | 2016-04-11
RxJava 教程第三部分:驯服数据流之 高级错误处理
前面已经知道如何使用 Observer 来处理错误情况。在前面一节中我们通过避免 Monad 使用传统的 Java 方式来处理异常。代码中可以出现各种各样的异常情况,并不是每一个异常都需要告诉上层代码的。在传统的 Java 中,你可以捕获一个异常,然后决定是自己处理该异常还是再次抛出去。同样,在 RxJava 中,你也可以根据异常来执行不同的逻辑而无需结束 Obser... [阅读全文]

RxJava 教程第三部分:驯服数据流之 避免 monad

rain | 移动 | 2016-04-09
RxJava 教程第三部分:驯服数据流之 避免 monad
monad 是函数式编程中的抽象概念,是一种高度的数学抽象,关于 monad 的详细介绍请看这里: Functors, Applicatives, And Monads In Pictures ,不要百度搜索其他的资料, 关于 monad 的介绍,在网上有 90% 都是错误的,误导人的。 在 www.introtorx.com 中也有一个简短的定义: Monad 是一种在模型域对象中封装了计算逻辑而不是数据的一种抽象数据... [阅读全文]
Ɣ回顶部