响应式编程
文章平均质量分 83
响应式编程
亚洲小炫风
亚洲小炫风
展开
-
RxAndroid与RxJava 变换的原理值lift()
lift的中文意思的电梯,实质是针对事件序列的处理和再发送,在RxJava的内部,在Rxjava的内部,他们都是基于同一个基础的变换方法lift()源码: public final Observable lift(final Operator operator) { return new Observable(new OnSubscribe() {原创 2015-12-29 09:44:10 · 2185 阅读 · 0 评论 -
RxJava 转换操作符 flatMap
flatMap操作符是把Observable产生的结果转换成多个Observable,然后又直接把这些Observable转换一个Observable,并依次提交产生的结果给订阅者规律:源Observable 传入flatMap对应参数,在flatMap中返回自定义的Observable例子:扫描文件:private void flatMap() { Observabl原创 2016-02-23 16:29:05 · 753 阅读 · 0 评论 -
RxJava转换操作符 conactMap
concatMap操作符是将源Observable转换成对各操作符,然后又链接返回给源Observable,这与flatMap十分相似,最大的区别:concatMap 是保证结果的顺序性,就是顺序与输入一致.例子:在这里最大的数线程延迟最长,照理应该是最大的数最后出来,结果很意外: Observable.just(2, 1).concatMap(new Func1>() {原创 2016-02-25 15:26:39 · 1259 阅读 · 0 评论 -
RxJava 转换操作符 switchMap
switchMap与flatMap和concatMap的区别在于:不好总结:RxJava also implements the switchMap operator. It behaves much like flatMap, except that whenever a new item is emitted by the source Observable, it will un原创 2016-02-25 17:23:05 · 15801 阅读 · 5 评论 -
RxJava 转换操作符scan
sacn操作符是遍历源Observable产生的结果,再按照自定义规则进行运算,依次输出每次计算后的结果给订阅者:call 回掉第一个参数是上次的结算结果,第二个参数是当此的源observable的输入值例子: 依次做加法 Observable.range(1, 10).scan(new Func2() { @Override publi原创 2016-02-27 12:16:19 · 2772 阅读 · 0 评论 -
RxJava 操作符分类
RxJava的最大优势就是代码思路清晰,不用考虑底层的线程同步,异步通知等内容,这样我们可以把主要精力集中在如何实现业务逻辑上.顺便学习 RxJava 延迟执行timer就等同于handler执行一个延迟任务一样,通常在启动loading页面等,以及广告轮播图等等 // timer(long delay, TimeUnit unit, Scheduler scheduler) 参原创 2016-02-18 15:11:31 · 1556 阅读 · 0 评论 -
RxJava转换操作符cast
介绍一个异常ClassCastException:类型转换异常,cast操作符就是将不同数据类型转换成指定类型. Observable.range(1,5).cast(Integer.class).subscribe(new Observer() { @Override public void onCompleted() {原创 2016-02-27 17:26:12 · 2130 阅读 · 1 评论 -
RxJava转换操作符window
window操作符会在时间间隔内缓存结果,类似于buffer缓存一个list集合,区别在于window将这个结果集合封装成了observablewindow(long timespan, TimeUnit unit)第一个是缓存的间隔时间,第二个参数是时间单位Observable.interval(1,TimeUnit.SECONDS).take原创 2016-02-27 19:29:12 · 4584 阅读 · 0 评论 -
RxJava过滤操作符 filter
filter操作符是对源observable产生的结果自定义规则进行过滤,只有满足条件的结果才会提交给订阅者:官方流程图:.filter(new Fuc1call的返回值为Bool类型,决定了是否将结果输出给订阅者:原创 2016-02-27 22:24:33 · 9492 阅读 · 0 评论 -
RxJava过滤操作符 debounce
debounce操作符是对源Observable间隔期产生的结果进行过滤,如果在这个规定的间隔期内没有别的结果产生,则将这个结果提交给订阅者,否则忽略该结果,原理有点像光学防抖..debounce(时间,时间单位)例子: Observable.create(new Observable.OnSubscribe() { @Override原创 2016-02-29 10:06:14 · 5213 阅读 · 0 评论 -
RxJava 过滤操作符 distinct和elementAt
distinct类似于sql关键字distinct 去重,elementAt 获取指定索引的结果例子1:去重 Observable.just(1, 2, 3, 1, 2, 3, 12, 3).distinct().subscribe(new Action1() { @Override public void call(Integer inte原创 2016-02-29 11:37:31 · 3272 阅读 · 0 评论 -
RxJava 过滤操作符 ofType
.ofType(class) 指定某个类型的class,过滤属于这个类型的的结果,其它抛弃例子: Observable.just("first", 2, 3, "four").ofType(Integer.class).subscribe(new Action1() { @Override public void call(Int原创 2016-02-29 13:21:12 · 2964 阅读 · 0 评论 -
RxJava 过滤操作符 first last single
first操作符是获取源Observable产生的第一个数据或者满足指定条件的第一个数据,,和前面所说的elementAt(0)有差别:例子1:获取绝对的第一个,与elementAt(0)一样: Observable.range(1,10).first().subscribe(new Action1() { @Override publi原创 2016-02-29 13:51:10 · 3476 阅读 · 0 评论 -
RxJava 过滤操作符 ignoreElements
ignoreElements操作符忽略所有源Observable产生的结果,只会执行onCpmpleted()或者onError()方法源码:Observable.java public final Observable ignoreElements() { return lift(OperatorIgnoreElements. instance()); }原创 2016-03-01 09:32:38 · 2201 阅读 · 0 评论 -
RxJava 过滤操作符 sample
sample操作符是定期扫描源Observable产生的结果,在指定的间隔周期内进行采样例子1:每2s扫描一次 Observable.interval(1, TimeUnit.SECONDS).sample(2, TimeUnit.SECONDS).subscribe(new Observer() { @Override public voi原创 2016-03-01 09:44:59 · 2786 阅读 · 0 评论 -
google 响应式编程 agera 试用
google 在本月也发布了一个响应式框架:agera[超级不好发音] 关于响应式编程 可以参考我的博客RxJava与RxAndroid,这里不再赘述;第一步:添加依赖 https://github.com/google/agera compile 'com.google.android.agera:agera:1.0.0-rc2' 在她基础上google又原创 2016-04-27 14:28:24 · 2761 阅读 · 0 评论 -
RxJava 组合操作符
RxJava有许多组合操作符,按照某种规则,进行多个源Observable的合并,下面依次介绍:concat操作符是将多个Observable 按传入顺序进行输出,O_a输出完毕,O_b接着输出:例子: Observable range = Observable.range(1, 5); List data = Arrays.asList(6, 7, 8, 9, 10原创 2016-03-18 14:33:58 · 886 阅读 · 1 评论 -
RxJava 转换操作符 buffer
buffer操作符的功能:1:能一次性集齐多个结果到列表中,订阅后自动清空相应结果,直到完全清除2: 也可以周期性的集齐多个结果到列表中,订阅后自动清空相应结果,直到完全清除例子1: 一次订阅2个//一次订阅2个 Observable.range(1,5).buffer(2).subscribe(new Observer>() {原创 2016-02-19 16:57:46 · 5351 阅读 · 0 评论 -
RxJava 操作符 repeat与repeatWhen
repeat操作符就是对某一个Observable重复产生多次结果,dan原创 2016-02-19 15:16:20 · 9480 阅读 · 0 评论 -
RxAndroid与RxJava 变换
RxJava比较流弊除了线程调度之外,还比较流弊的的方面就是变换变换:就是将事件中序列中的对象或者整个序列进行加工处理,转换成不同的事件或者事件序列.看似复杂,简单说就是加工(如一个图片的路径加工得到一张图片)例子: /** * 参数类型是drawable id 最终获得drawable图片 */ private void mapTest() {原创 2015-12-27 18:17:23 · 595 阅读 · 0 评论 -
RxJava 与RxAndroid 的线程控制
通过之前的学习,并没发现他们说的能取代AsyncTask的优势,接下来将介绍他如何实现线程控制在RxJava的默认规则中,事件的发出与消费都是在同意线程中,也就是是说默认观察者和被观察者事件的处理与传递都是在一个线程中,这似乎不和观察者本身的意愿就是异步机制,这将会牵扯出宁一个类Scheduler在不指定线程的情况下,RxJava遵循的是线程不变原则,即:在哪个线程中调用subscirbe原创 2015-12-26 10:26:24 · 4421 阅读 · 0 评论 -
RxJava与RxAndroid 被观察者的创建
在RxJava有一个模型, 【观察者 】 【被观察者】,事件的源头触发时由北观察者触发的这里的被观察者也就是ObServable类它的创建方式:Observable.Create();当然还有其方式创建:如Observable.empty()Observable.errror();Observable.never()Observable.just("1"原创 2015-12-25 15:39:00 · 1164 阅读 · 0 评论 -
给 Android 开发者的 RxJava 详解
原文出处:http://gank.io/post/560e15be2dca930e00da1083 前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava原创 2015-12-25 14:46:44 · 595 阅读 · 0 评论 -
RxJava与RxAndroid 操作符
本篇博客将会了解RxJava的操作符,主要体现在数据的展示或者传递方面打印数组: String[] data = {"1", "2", "3"}; Observable.from(data).subscribe(new Observer() { @Override pub原创 2015-12-25 11:23:53 · 941 阅读 · 0 评论 -
RxAndroid 官方demo理解
package com.rxandroid.test1;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;import android.os.Process;import android.support.v7.app.AppCompatActivity;import a原创 2015-12-24 18:25:07 · 2669 阅读 · 0 评论 -
RxJava 初识
响应式编程越来越流行,我也不得不来跟随主流,主要和大家分享RxJaVARxJava 类似于java观察者模式,但是又有区别RxJava 主要分为两大部分 发布者 订阅者首先来一个实例 findViewById(R.id.bt1).setOnClickListener(new View.OnClickListener() {原创 2015-12-24 16:24:24 · 511 阅读 · 0 评论 -
RxJava与RxAndroid 接收消息通知
RxJava与RxAndroid 接收消息通知 主要通过两个类rx.Observerrx.Subscriber这两个类的关系:继承关系rx.Observer被rx.Subscriber继承作用Provides a mechanism for receiving push-based notifications from Observables, and pe原创 2015-12-25 13:52:38 · 2798 阅读 · 0 评论 -
RxJava 过滤操作符 skip,skipLast,task,takeLast
skipe(n)操作符跳过源Obsrvable的前面n个数据项 Observable.range(1, 10).skip(5).subscribe(new Action1() { @Override public void call(Integer integer) { LogUtils.d("----->cal原创 2016-03-02 16:53:40 · 3530 阅读 · 0 评论 -
RxJava 创建操作符create
create操作符是所有创建操作符的源头,其他创建型的操作符都是通过create操作符来创建的 Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { if (!subs原创 2016-02-18 15:56:37 · 481 阅读 · 0 评论 -
RxJava 创建操作符form
form操作符也是调用了create来创建的Observable部分源码: public final static Observable from(T[] array) { return from(Arrays.asList(array)); } public final static Observable from(Iterable iterable原创 2016-02-18 16:17:11 · 850 阅读 · 0 评论 -
RxJava 创建操作符 just
just操作符是在from操作符上面封装上来的:源码:from操作符也是将其他类型的对象和数据类型转化成Observable,例如: Observable.just("1","2","3").subscribe(new Action1() { @Override public void call(String s) {原创 2016-02-18 16:30:19 · 468 阅读 · 0 评论 -
RxJava 创建操作符 defer
defer的英文意思就是推迟,在这里是推迟Observable的创建,defer操作符是直到有订阅者订阅时,才通过Observable的工厂方法创建Observable,defer能保证Observable的状态是最新的: value = 1; Observable justObservable = Observable.just(value); Observa原创 2016-02-18 16:59:10 · 1504 阅读 · 0 评论 -
RxJava 创建操作符 timer与interval
timer操作符既可以延迟执行一段逻辑,也可以间隔执行一段逻辑,但是已经过时了,而是由interval操作符来间隔执行.timer延迟执行例子:如延迟5秒: Observable.timer(5, TimeUnit.SECONDS).subscribe(new Observer() { @Override public void onComp原创 2016-02-18 17:30:37 · 31834 阅读 · 1 评论 -
RxJava 创建操纵符 range
Range操作符是创建一组在从n开始,个数为m的连续数字,比如range(1,5),就是创建1.2.3.4.5的连续整数源码: public final static Observable range(int start, int count) { if (count < 0) { throw new IllegalArgumentExcept原创 2016-02-18 18:22:34 · 654 阅读 · 0 评论 -
RxJava 2升级整理
形式正确的有限Observable 调用观察者的onCompleted正好一次或者它的onError正好一次,而且此后不能再调用观察者的任何其它方法。如果onComplete 或者 onError 走任何一个 都会 主动解除订阅关系;如果解除订阅关系以后在发射 onError 则会 报错;而发射onComplete则不会。注意解除订阅关系 还是可以发射 onNextDispos原创 2017-08-31 14:35:58 · 996 阅读 · 0 评论