RxJava 参考资源

rain | 移动 | 2016-05-10
通过弹子图(Marbles)可以帮助理解 RxJava 中的各种操作函数。通过实例代码可以加深了解每个操作函数。 下面是几个非常好的学习 Rxjava 的工具: http://rxmarbles.com/ : 这个网站通过交互图形介绍了很多 RxJava 中的操作函数。选择要查看的操作函数,然后显示该函数的 Marble 图,该图是可以交互的,可以用鼠标拖动每个数据的位置,查看输出的结果... [阅读全文]
ė 0

Google Agera 从入门到放弃

rain | 移动 | 2016-05-06
概述 Google Agera 是两周前 Google 开发团队开源出来的另外一个响应式编程(Reactive programming)框架。根据 Github 上的讨论结果,笔者猜测这个框架是这样形成的: Google Play Movie 是 谷歌 Android 上的一个浏览电影、购买电影、观看电影的 App,而谷歌的开发人员在开发 Google Play Movie 的时候(这个时候 RxJava 应该还没有发布呢?),根据... [阅读全文]
ė 0,

Intro To RxJava 系列教程 总结

rain | 移动 | 2016-05-03
Intro To RxJava 系列教程一共四个部分,第一部分介绍了为什么要使用 RxJava以及 RxJava的关键概念: RxJava 教程第一部分:入门之 Why Rx RxJava 教程第一部分:入门之 关键的类 RxJava 教程第一部分:入门之 生命周期管理 如果看完第一部分对于为什么要使用 RxJava 和 何时使用 RxJava 还不太明白的,可以参考 RxJava 前传: RxJava 前传 ① RxJava ... [阅读全文]
ė 0

RxJava 教程第四部分:并发 之数据流发射太快如何办

rain | 移动 | 2016-04-26
RxJava 教程第四部分:并发 之数据流发射太快如何办
Backpressure Rx 中的数据流是从一个地方发射到另外一个地方。每个地方处理数据的速度是不一样的。如果生产者发射数据的速度比消费者处理的快会出现什么情况?在同步操作中,这不是个问题,例如: [crayon-587f2204a7e3c183384966/] 虽然上面的消费者处理数据的速度慢,但是由于是同步调用的,所以当 o.onNext(1) 执行后,一直阻塞到消费者处理完才... [阅读全文]

RxJava 教程第四部分:并发 之意外情况处理

rain | 移动 | 2016-04-26
RxJava 教程第四部分:并发 之意外情况处理
Rx 尽量避免状态泄露到数据流之外的场景。但是有些东西本身就带有状态。比如服务器可以上线和离线、手机可以访问Wifi、按钮被按下了等。在 Rx 中国,我们在一段时间内看到这些事件,并称之为窗口(window)。其他事件在这个窗口内发生可能需要特殊处理。例如,手机在使用移动收费上网的时候,会把网络请求优先级降低,来避免天价流量费的情况。 窗口 W... [阅读全文]

RxJava 教程第四部分:并发 之测试

rain | 移动 | 2016-04-26
在开发软件的时候,我们需要确保代码正确执行。为了快速的获取每次修改后的反馈,通常开发人员使用自定义测试。 在同步的 Rx 中测试和普通 Java 中的单元测试没有太大的区别。如果要测试异步代码,可能会有点需要注意的地方,比如要测试下面的代码: [crayon-587f2204ac857098197502/] 上面的 Observable 发射一个数据流,需要 5秒 来发射完所有的数... [阅读全文]

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

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

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

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