RX(一)

建议,先去了解观察者模式。

前期工作:引入RX的包

build.gradle脚本里面的

dependencies{
compile ‘io.reactivex:rxjava:1.1.0‘compile ‘io.reactivex:rxandroid:1.1.0‘
}

需要用到的类  Observable  Subscriber

第一种写法:1.创建被观察者
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {    @Override    public void call(Subscriber<? super String> subscriber) {        if (!subscriber.isUnsubscribed()) {            subscriber.onNext("hello");            subscriber.onNext("hi");            subscriber.onNext("world");            subscriber.onNext("ok");            subscriber.onCompleted(); // 结尾        }    }});
2. 定义观察者
Subscriber<String> subscriber = new Subscriber<String>() {    @Override    public void onCompleted() {        Log.e(TAG, "onCompleted");    }

@Override    public void onError(Throwable e) {        Log.e(TAG, "onError");    }

@Override    public void onNext(String str) {        Log.e(TAG, str);    }};3.关联被观察者observable.subscribe(subscriber);   
第二种写法:
Observable.create(new Observable.OnSubscribe<Integer>() {        @Override        public void call(Subscriber<? super Integer> subscriber) {

if (!subscriber.isUnsubscribed()) {                for (int i = 0; i < 10; i++) {                    subscriber.onNext(i);                }                subscriber.onCompleted();            }        }    }).subscribe(new Subscriber<Integer>() {        @Override        public void onCompleted() {            Log.e(TAG, "onCompleted");        }

@Override        public void onError(Throwable e) {            Log.e(TAG, "onError");        }

@Override        public void onNext(Integer integer) {            Log.e(TAG, String.valueOf(integer));        }    });}

				
时间: 2024-12-16 08:50:03

RX(一)的相关文章

.Net并行编程 - Reactive Extensions(Rx)并发浅析

关于Reactive Extensions(Rx) 关于Reactive Extensions(Rx),先来看一下来自微软的官方描述: The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators. Using Rx, developers represen

AMD:RX 480双卡就这样灭GTX 1080!

日前宣布新卡Radeon RX 480的时候,AMD做了一番性能演示,同时使用RX 480双卡.GTX 1080单卡跑DX12游戏<奇点灰烬>的基准测试,结果前者完胜. 要知道,GTX 1080只要199美元,两块加起来也不到400美元,GTX 1080的两个版本则是599/699美元. 那么,AMD是怎么做到的呢? AMD全球技术营销总监Robert Hallock特意对此做了详细解释,尤其是给出了测试平台配置: Core i7-5930K处理器.华擎X99M Killer主板.32GB D

82599网卡驱动rx descriptor结构体分析

82599 datasheet: 7.1.6  节    大概位于314页 对驱动的理解关键是对数据结构的理解. The 82599 posts receive packets into data buffers in system memory. The following controls are provided for the data buffers: ? The SRRCTL[n].BSIZEPACKET field defines the data buffer size. See

perl6正则 1: ~~ , //, m//, rx//

~~ perl6 中, 要匹配一个正则, 使用 ~~ 智能匹配符. > so 'abcde' ~~ /a.c/ True > so 'abcde' ~~ /a.d/ False > // 或 m 模式中, 默认用 // , 如果要改变, 像perl5一样加 m前缀就行. > ~('abcde' ~~ m! a. !) ab > rx// 如果我们要把正则保存到一个变量中, 可以用 rx // 创建一个表达式. > my $r = 'a.'; a. > $r a.

Reactive Extensions(Rx)并发浅析

Reactive Extensions(Rx)并发浅析 iSun Design & Code .Net并行编程 - Reactive Extensions(Rx)并发浅析 关于Reactive Extensions(Rx) 关于Reactive Extensions(Rx),先来看一下来自微软的官方描述: The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs us

再见Flux, 欢迎Bacon/Rx?

Facebook的Flux和React.js刚刚变得很火,大有剿灭MVC之势,现在又有人提出再见Flux,新的Bacon/Rx有哪些优势呢? Facebook一年前引入Flux架构,它是客户端建立Web应用的最新革新,是对Angular.js的前端MVC的提升与革命,如今已经成为Web开发者最火热的技术. Flux是使用dispathcer将业务逻辑从用户界面中分离出来,核心思想是单向数据流,这意味着响应用户动作的事件的传播可以单向传遍整个系统,不需要绑定任何内部数据模型: 这种单向数据流与Re

【分享】初音岛(D.C.)系列(包括D.C.III RX初音岛3) 汉化硬盘版游戏

游戏内容: [040528][CIRCUS]D.C.P.C-ダ?カーポ-プラスコミュニケーション [汉化硬盘版].rar(2.7GB)[060415][CIRCUS]D.C.II 春风のアルティメットバトル! [汉化硬盘版].rar(321.9MB)[060526][CIRCUS]D.C.II-ダ?カーポII- [汉化硬盘版].rar(1.9GB)[061107][CIRCUS]D.C.II -featuring Yun2- [汉化硬盘版].rar(335MB)[070427][CIRCUS]D

RX系列五 | Schedulers线程控制

RX系列五 | Schedulers线程控制 在我们上一篇文章中的,我们的小例子里有这么一段代码 //网络访问 .observeOn(Schedulers.io()) 事实上,我们在使用网络操作的时候,便可以控制其运行在哪个线程中,而Schedulers类,有四个方法,分别是 Schedulers.immediate(); Schedulers.newthread(); Schedulers.io(); Schedulers.computation(); 以及RxAndroid中的Android

使用Rx缓存网络数据

欢迎Follow我的GitHub, 关注我的CSDN. RxJava是响应式编程, 在异步处理网络数据时, 使用广泛. 我们也可以使用一些Rx的特性, 优雅地缓存网络数据. 缓存模式: 读取数据库, 显示, 请求数据, 存储到数据库, 再更新页面. 使用Dagger2+Retrofit+Rx的标准组合, 我来讲解一下如何使用. GitHub下载地址 1. 框架 常规项目, 包含跳转缓存和非缓存页面, 为了模拟慢速环境, 延迟3秒加载数据. public class MainActivity ex

响应式编程(Reactive Programming)(Rx)介绍

很明显你是有兴趣学习这种被称作响应式编程的新技术才来看这篇文章的. 学习响应式编程是很困难的一个过程,特别是在缺乏优秀资料的前提下.刚开始学习时,我试过去找一些教程,并找到了为数不多的实用教程,但是它们都流于表面,从没有围绕响应式编程构建起一个完整的知识体系.库的文档往往也无法帮助你去了解它的函数.不信的话可以看一下这个: 通过合并元素的指针,将每一个可观察的元素序列放射到一个新的可观察的序列中,然后将多个可观察的序列中的一个转换成一个只从最近的可观察序列中产生值得可观察的序列. 天啊. 我看过