RxJava操作符学习笔记

by admin on 2019年1月23日

操作符

操作符是为着化解对Observable对象的更换的题目,操作符用于在Observable和最终的Subscriber以内修改Observable发出的风云。
RxJava提供了众多很有用的操作符。

Subscribers更应有做的事情是“响应”,响应Observable发出的风浪,而不是去修改。

由此修改就付出操作符吧.

后天清早在凤凰新闻上观察一篇小说,说的是前日胡歌(英文名:)在某酒楼大堂被网友拍到很清闲的看书。据说胡歌先生是娱乐圈中难得的爱书之人,还有人把胡歌先生曾在今日头条、访谈中推介过的书做了一个整理,不失为服务广大“胡椒粉”的善事了。

Map

transform the items emitted by an Observable by applying a function to
each item

用来把一个事件转换为另一个事变。
map()操作符就是用来变换Observable对象的,map操作符再次回到一个Observable对象,那样就足以兑现链式调用,在一个Observable对象上往往行使map操作符,最后将最精简的数目传递给Subscriber对象。

图片 1

原理

实效

特性:

  1. 它不用再次回到Observable对象回来的类型,你可以选拔map操作符重临一个生出新的数据类型的observable对象。
  2. 可以对一个Observable数次选拔map

用一个事例来陶冶:

//刚创建的Observable是String类型的
Observable.just("Hellp Map Operator")
.map(new Func1<String, Integer>() {
    @Override
    public Integer call(String s) {
        return 2015;//通过第一个map转成Integer
    }
}).map(new Func1<Integer, String>() {
    @Override
    public String call(Integer integer) {
        return String.valueOf(integer);//再通过第二个map转成String
    }
}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

Run起来输出日志:

2015

在此从前,我只知道有个叫“胡歌先生”的人,演过一部“仙剑”,想来应该是二次元少年们的社会风气。后来很丧气出了一场车祸。看完《琅琊榜》,反差太大了。对于此人,有种惊艳的感觉。

From

convert various other objects and data types into Observables

from()收纳一个集同盟为输入,然后老是输出一个元素给subscriber.

  1. from(Iterable<? extends T> iterable)
  2. from(T[] array)

from

看个例子,将集结的数量都输出:

List<String> s = Arrays.asList("Java", "Android", "Ruby", "Ios", "Swift");
Observable.from(s).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

Log:

Java
Android
Ruby
Ios
Swift

另外from也接受数组类型:

Observable.from(new String[]{"Java","Android"}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

倘若说文章是瓜熟蒂落了影星,没错。不过一个角色的中标,必然投射出影星的内心深度。我设想不出即便《爱新觉罗·玄烨王朝》不是陈道明去演,会是什么样的一种画风。正像胡歌(英文名:)与梅长苏,相互成就,玉石俱焚。看的不明时,你会以为他们就是一个人。

FlatMap

transform the items emitted by an Observable into Observables, then
flatten the emissions from those into a single Observable

Observable.flatMap()接收一个Observable的出口作为输入,同时输出别的一个Observable。

图片 2

先加一个函数

static Observable<List<String>>query(){
        List<String> s = Arrays.asList("Java", "Android", "Ruby", "Ios", "Swift");
        return Observable.just(s);
}

大家打印所有query到的语言:

// 注意这里的参数是 query所返回的Observable的输出,并且返会一个Observable<String>
query().flatMap(new Func1<List<String>, Observable<String>>() {
    @Override
    public Observable<String> call(List<String> strings) {
        //结合from处理
        return Observable.from(strings);
    }
}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println("_flatMap:"+s);
    }
});

日志:

_flatMap:Java
_flatMap:Android
_flatMap:Ruby
_flatMap:Ios
_flatMap:Swift

注意:query返回的Observable的输出是List<String>,在flatMap中变成了参数,而处理过后,返回一个Observable<String>.

假若那时候大家须求处理一下所获取的结果,大家加个前缀,在保管不修改subscribe的前提下大家得以如此做:

追加个函数,用来充实个前缀:

static Observable<String>addPre(String lan){
        return Observable.just("addPre_"+lan);
}

代码可以这么写:

query().flatMap(new Func1<List<String>, Observable<String>>() {
    @Override
    public Observable<String> call(List<String> strings) {
        return Observable.from(strings);
    }
}).flatMap(new Func1<String, Observable<String>>() {
    @Override
    public Observable<String> call(String s) {
        //我们在这里调用`addPre`方法,就行处理
        return addPre(s);
    }
}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

输出日志

addPre_Java
addPre_Android
addPre_Ruby
addPre_Ios
addPre_Swift

map与flatMap的区分(出自朱凯):

map 是在一个 item 被发射之后,到达 map 处经过转换成为另一个 item
,然后继续往下走;
flapMap 是 item 被发射之后,到达 flatMap 处经过转换成为一个 Observable
,而以此 Observable
并不会直接被发射出来,而是会即刻被激活,然后把它发出出的每个 item
都流传流中,再持续走下去。
因而 flatMap 和 map 有三个界别:

  1. 经过 Observable 的变换,相当于再次开了一个异步的流;
  2. item 被分散了,个数发生了变化。

以此flatMap依旧比较麻烦知晓,它到底是何许做事的.
团结还须要多去询问一下.

网上有个凤凰卫视对胡歌先生的访谈,他说《琅琊榜》里回忆最深的一句台词是:“既然让自己活了下去,我就不可以白白的活着”。说的何尝不是友好。

越多操作符

  1. filter 过滤,把不符合条件的过滤掉,留下符合条件的
  2. take 指定最多输出的数量
  3. doOnNext
    允许大家在每趟输出一个因素此前做一些外加的事体(其实就是在onNext里调用的)

就用一个事例来演示一下吧:

query().flatMap(new Func1<List<String>, Observable<String>>() {
    @Override
    public Observable<String> call(List<String> strings) {
        return Observable.from(strings);
    }
}).flatMap(new Func1<String, Observable<String>>() {
    @Override
    public Observable<String> call(String s) {
        return addPre(s);
    }
}).filter(new Func1<String, Boolean>() {
    @Override
    public Boolean call(String s) {
        //包含a的留下
        return s.contains("a");
    }
}).take(3)//最多只取3个
  .doOnNext(new Action1<String>() {
    @Override
    public void call(String s) {
        //onNext之前 输出一下
        System.out.println("doOnNext:"+s);
    }
}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

输出:

doOnNext:addPre_Java
addPre_Java
doOnNext:addPre_Android
addPre_Android
doOnNext:addPre_Ruby
addPre_Ruby

还有众多广大浩大操作符须要去读书,那里就罗列这么多少个.

参考

深入浅出RxJava(二:操作符)
Operators

安利:
我的Github
自家的天涯论坛
本身的微信公众号:

微信公众号

她竟得以将梅长苏演绎到这种程度,如此冷静,如此坚定。隔着几米远的显示屏,你都足以感受到那种味道。五次次穿透你的心。

“你知道自家那双手,在此以前也是挽过大弓,降过烈马的,可是前几日不得不在这阴诡鬼世界里,搅弄风浪了”,我记得及时听见这一句时,是男子也要心碎的差一点落泪。

“我是从鬼世界里爬出来的人,骨髓里都渗着毒”。那样的痛彻心骨,心思又多少人能懂?

可怜曾经幽州城里最夺目、最知道的豆蔻年华,十二年后,死而复生。

不然复轻狂,却更有能力。

胡歌说,十年前经历的本场车祸,是她的好运。这时她24岁,年少成名,内心膨胀。车祸撞碎了她的身体,也撞碎他的生活。如若没有这一场车祸让自己只好停下来,他不明了未来的人生会发展成如何,很可能就只是演艺圈的一个泡沫。那是一个超自然的顿悟。

让自家纪念最深的是她对本次生死关头的回想。在手术室里抢救了七个钟头。刚出车祸时,他最担心的是静脉有没有破,脖子平昔在流血,能或不能够保住命?获得一定后,伊始担心眼睛能仍然不能保住,因为半边脸血肉模糊,没有知觉。最终,才是形容。他以为人永远是贪心的,当你保住命的时候还想要脸。他开始操心将来能或不能够做个影星,甚至要去大韩民国整容。当有一天照镜申时,他冷不防驾驭,为啥一定要重临过去,现在的也是团结。

众多事现在说来轻松,当时面对的伤心每趟、天天也不会放过您。

双重复发后,他有时候觉得是另一个谈得来,脸上两边就像是几个人,却都是自己。

有一回,他二姨突然病倒,在诊所里重病抢救,第二天她却要去演一部无厘头的喜剧。还有四次,外祖母在医院住院,他跟大爷焦头烂额,医院走廊上放着他在《欢娱大本营》里跳来跳去的镜头。他以为那是一个事情影星的两难和权责。到此处,一个孩他爸、一个影星,算是成熟了。

她说自己原先演戏常常用力过猛,现在知道放下了,存在即表现。那是一种通透。很三人或许到老都悟不透这点。

一部分人红是靠运气。她的红是靠什么样?我以为肯定是考虑。阅历,是考虑最要害的本色。

《金星秀》有一期胡歌(英文名:)的采集,他说所有二〇一六年都不曾接一部戏。罗睺问,你演过那么多角色,接下去你还想变成哪个人?胡歌(英文名:)说,我想成为团结。

是的。拥有你经历的,都会化为你生命的一片段。

“假若皮囊难以修复,我甘愿用思想,去填满它”

我也是痛楚。每便动笔前,都提醒自己少写点。每一趟都搂不住。好啊,回到正题。大家来研究他推荐过的书吗!

一个艺人能努力就很好,如若又爱看书,他的法门表现自然会更有活力,更久远。阅历和视野,但倘使有涉猎的浸润,就会注解和挖掘,变得尤其舒展而有香气。阅历决定你所能精晓的增幅,思想则决定了你所能显示的深度。

其实,每个人又何尝不是艺人,你需求扮演各样分化的角色,还要无缝切换,不是吧?

书不少,我们略举一些有代表性的座谈。只是一家之辞,不必当真。其实,无论谈什么人,说的都是上下一心。

书,仍然要和谐看的。

1、《哥伦比亚的倒影》

木心先生的首先部简体普通话版小说。他的文字,是这样的一种具有人类感情与学识表情的中华汉字,优雅、从容、洗练、蕴藉,极为器重。这本书被陈丹青认为是最好的随笔之一,有着现今难得一见的民国文脉。倘诺您从未那份闲心,像再而三剧一样的《管法学回忆录》也是很好的。既是文,也是史,又是诗。

2、《小王子》

那是一部百读不厌的成才童话,我觉着它像是工学版的《麦兜》,永远让你不由难熬,却终能坚信美好。据说销量低于《圣经》。不记得最初是何许时候读的了,爱、人生、世界的荒唐,那么些最主要的命题如此被突显的没什么,常使我会猜疑,是不是最精简的诗文才是最深沉的理学。

3、《活着活着就老了》

那是冯唐散文的购并,里面有那多少个有趣的书、有意思的人、有意思的事儿和幽默的地点。美好的文字总是不多见的,冯唐的小说没有开端,没有终止,没有主旨,没有悬念,有的是浓得化不开的盘算和长满翅膀和单臂的想像。还看过她的《三十六大》以及广受诟病的翻译《飞鸟集》。个人认为很好。

4、《1Q84》

没看过。只看过《挪威的老林》,于当下而言,当时青春,正得其时。现在犹如兴趣不大了。据说显明带有村上春树式的后现代主义文风。胡歌(英文名:)对那本书的明白是“如今算是把《1Q84》看完了,对‘命局’很有茅塞顿开。
所谓‘命局’,‘命’是天注定,‘运’是足以靠后天努力去创建的。
我说‘不如石沉大海’,是说人既无法太拘束,也绝不为了一个执念,而甩掉当下和接下来的活着”。说的很好!

5、余华连串小说

没悟出胡歌(英文名:)的书单里余华的文章竟有四本之多。可知他的保养。若是华夏有下一个诺Bell法学奖得主,一定是余华。他的著述总让您有一种触摸到亲情的疼痛感。《活着》、《许三观卖血记》等,那几个不该割裂的去看。生活的切肤之痛,世事的狭隘,人性的频仍,撕开给您看,好像比你自己看自己还清楚。

6、《武周那一个事儿》

人尽皆如,不用推荐。不过指出大家可以试着多换两种读法。我原先把它视为最佳的“马桶读物”,不是不敬,是爱极了,每趟都蹲到腿麻。后来作为和《红楼梦》一样的去读,不管是睡眠前,如故心态好时,情感不佳时,都足以读,随便翻到任何一页,都能够让您看下来而不会以为烦。那就是功夫,也是读书的另一种乐趣。

7、《江西生死书》

就像是每个经典电影名单中都会有一部《肖申克的救赎》,很四个人的书单中都会有一本《湖南生死书》。即便老套,却无力回天避开。那是一本可以被群众所能精晓的书,将藏传佛教甚深教法与普世人文关心岂有此理的玉石俱焚。胡歌(英文名:)说她在车祸后看了好四个人命方面的书,这一本他肯定印象深入。不必一次读完,了解了一部分再读上边的。有人说,那人间,除了生死,都是小事。

8、《天才在左,疯子在右》

用宗教的见识来看,大家都是精神患者,是心思上得了病的人。伊斯兰教、东正教、东正教,皆如此。怎么申明您不是个精神伤者,是个难题。梵高,纳什,阮籍?天才和疯子,是最具深度的格局话题之一。那本书,是小编高铭耗时4年深切医院精神科、公安部等秘密机关,和数百名“格外态人类”直接触及写作而成的国内率先本具有人文情怀的神经病患谈访录。

9、《禅与摩托车维修措施》

有人曾用伟大来描写那本书。类似的著述还有《达摩流浪者》,作者是杰克.凯鲁亚克。没错,他有一句口号你或许听过:“永远年轻,永远热泪盈眶”。这个书长远的影响了美利坚合营国的一代人,最特异的例如,乔布斯。高扬个性解放、自由、理想与爱,崇尚行走中的思考。假使你是一个背包客、旅行者,作为谈资也是必需的。最新的还有一本《一个人的朝拜》。

10、《瓦尔登湖》

一个人一生读的书不用多,能读懂最好的中坚就行。《瓦尔登湖》在美国的地位,大约是能够跟我们的《老子》、《论语》不分畛域的。从精神内涵上,我觉得它也毫不逊色。可以引进的书有成千上万,但本身觉着通俗而不流俗,让每个人都能读得懂,且能常读常新,才是最好的书本。在瓦尔登湖边上的两年,梭罗看到这些宇宙人生中最节省的真谛,大道至简。那本书可以给您像梅长苏同等如坐云端的清静气质。

PS:大概是自杀的性障碍,找图、换图就能折腾自己快五个小时。就到此刻吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图