惟有作学习材料收集,请不转载,如要转载请联系原作者

原创 2017-09-01 鸿洋
鸿洋
昨天让大家推荐的伟人福利来袭,还记得去年之百般“玩Android”网站么?(可点击访问)

近年来在看RxJava相关的文章,同事之前也召开了有享,RxJava用起来还是颇爽的,尤其是一个页面需要多单网要,在决定这些访问请求顺序、并发请求、失败重试、token生效等。

当下了,因为今是已经更新到RxJava2了,所以本篇主要目前凡是RxJava2上学资源的推介,后面来机遇会指向各种现象描写一篇的战类的章。

事先贴几独必备之地方,以及wiki:

https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid
https://github.com/JakeWharton/RxBinding
https://github.com/JakeWharton/RxRelay
https://github.com/ReactiveX/RxJava/wiki/Additional-Reading

得在拘留了脚的入门资料后,细细的看下官方的有关文章。

1、0基础到上亲手

这非常推荐简书作者Season_zlc的“水管”系列,相信广大人口且看罢,看罢而尽管明白为什么被“水管”系列了~~

受新家的RxJava2.0课程(一)

http://www.jianshu.com/p/464fa025229e

深受新家的RxJava2.0学科(二)

http://www.jianshu.com/p/8818b98c44e2

叫新家的RxJava2.0科目(三)

http://www.jianshu.com/p/128e662906af

为新家的RxJava2.0课程(四)

http://www.jianshu.com/p/bb58571cdb64

吃新家的RxJava2.0课(五)

http://www.jianshu.com/p/0f2d6c2387c9

给新家的RxJava2.0课程(六)

http://www.jianshu.com/p/e4c6d7989356

深受新家的RxJava2.0学科(七)

http://www.jianshu.com/p/9b1304435564

被新家的RxJava2.0科目(八)

http://www.jianshu.com/p/a75ecf461e02

让新家的RxJava2.0学科(九)

http://www.jianshu.com/p/36e0f7f43a51

新濠娱乐 1

贴单二维码可以高达。

接通下去还有简书作者南尘2251底RxJava2系列。

马上或许是极其好的RxJava 2.x 入门教程(一)

http://www.jianshu.com/p/a93c79e9f689

当即或是极度好的RxJava 2.x 入门教程(二)

http://www.jianshu.com/p/b39afa92807e

顿时恐怕是无比好的RxJava 2.x 入门教程(三)

http://www.jianshu.com/p/e9c79eacc8e3

眼看也许是无与伦比好的RxJava 2.x 入门教程(四)

http://www.jianshu.com/p/c08bfc58f4b6

旋即或者是最为好的RxJava 2.x 入门教程(五)

http://www.jianshu.com/p/81fac37430dd

GitHub 代码同步更新:
https://github.com/nanchen2251/RxJava2Examples

讫结版刚好按公众号推送了,可以直接过去立马也许是绝好的 RxJava 2.x
入门教程(完结版)~

差不多看罢就已对RxJava2来一定之了解了,接下去就大强硬的操作符的修了~

2.操作符与实战

CSDN作者余志强的RxJava2操作符系列:

RxJava create操作符的用法及源码分析

http://blog.csdn.net/johnny901114/article/details/51524470

RxJava map操作符用法详解

http://blog.csdn.net/johnny901114/article/details/51531348

RxJava flatMap操作符用法详解

http://blog.csdn.net/johnny901114/article/details/51532776

RxJava concatMap操作符用法详解

http://blog.csdn.net/johnny901114/article/details/51533282

RxJava onErrorResumeNext操作符实现app与劳务器间token机制

http://blog.csdn.net/johnny901114/article/details/51533586

RxJava retryWhen操作符实现错误重试机制

http://blog.csdn.net/johnny901114/article/details/51539708

RxJava 使用debounce操作符优化app搜索功能

http://blog.csdn.net/johnny901114/article/details/51555203

RxJava concat操作处理多数据源

http://blog.csdn.net/johnny901114/article/details/51568562

RxJava zip操作符在Android中的骨子里运用状况

http://blog.csdn.net/johnny901114/article/details/51614927

RxJava switchIfEmpty操作符实现Android检查本地缓存逻辑判断

http://blog.csdn.net/johnny901114/article/details/52585912

RxJava defer操作符实现代码支持链式调用

http://blog.csdn.net/johnny901114/article/details/52597643

combineLatest操作符的高等级应用

http://blog.csdn.net/johnny901114/article/details/61191723

尚发生只可怜给力的开源项目,“Learn RxJava By Samples”:

新濠娱乐 2

https://github.com/amitshekhariitbhu/RxJava2-Android-Samples

带有非常多的Sample,你呢得以以它们的README上博更多信息~

该篇是本着拖欠种的记录,方便速查:

RxJava 知识梳理(2) – RxJava2 操作符实践

http://www.jianshu.com/p/2ddd9bb8b1d7

欠作者最近呢于描绘有逼真战类的篇章:

RxJava2 实战知识梳理(1) – 后台执行耗时操作,实时通报 UI 更新

http://www.jianshu.com/p/c935d0860186

RxJava2 实战知识梳理(2) – 计算一段时间内数据的平均值

http://www.jianshu.com/p/5dd01b14c02a

RxJava2 实战知识梳理(3) – 优化搜索联想功能

http://www.jianshu.com/p/7995497baff5

RxJava2 实战知识梳理(4) – 结合 Retrofit 请求新闻消息

http://www.jianshu.com/p/74f46ae1fabb

RxJava2 实战知识梳理(5) – 简单与进阶的轮询操作

http://www.jianshu.com/p/fa1828d70192

RxJava2 实战知识梳理(6) – 基于左类型的重试请求

http://www.jianshu.com/p/d135f19e045c

RxJava2 实战知识梳理(7) – 基于 combineLatest 实现之输入表单验证

http://www.jianshu.com/p/25682d620320

RxJava2 实战知识梳理(8) – 使用 publish + merge
优化先加载缓存,再念博网络数据的要过程

http://www.jianshu.com/p/dfc11118b70b

3起源路

帅的品种多推荐2个顶多矣吗扣不收场~

纵然看气候

就扣留天气——是一模一样慢慢悠悠以 Material Design 风格之无非拘留气候的APP。

  • 卡展现(当前天气情况,未来几乎时天气情况,生活建议,一完美七上概况)

  • 缓存数据,减少网络要,保证离线查看

  • 放置两仿图标(设置里改变)

https://github.com/xcc3641/SeeWeather

新濠娱乐 3

新濠娱乐 4

Paste_Image.png

极客日报

极客日报,一迟迟纯粹的读书App,基于Material Design + MVP + RxJava2 +
Retrofit + Dagger2 + Realm + Glide
是因为学习之目的做了及时款Material
Design风格的简洁之读应用,基本包含了即Android端开发极常用之主流框架,阅读内容根本面向程序员/极客,目前包:
知乎日报、微信精选、干货集中营、稀土掘金、V2EX

https://github.com/codeestX/GeekNews

新濠娱乐 5

新濠娱乐 6

Paste_Image.png

4 源码解析

引进生张旭童的博客相信关注本公众号的很多都看过旭童的文章

RxJava2 源码解析(一)

http://blog.csdn.net/zxt0601/article/details/61614799

RxJava2 源码解析(二)

http://blog.csdn.net/zxt0601/article/details/61637439

5.适用场景

[正文作者: 阳春面 本文链连: http://appkfz.com/2017/09/01/best-scene-use-rxjava/

版权声明: 本博客所有文章除特别声明外,均用 CC BY-NC-SA 3.0
许可商榷。转载请注明出处!]

脚我们开始介绍RxJava最符合利用的季种状况,代码示例基于RxJava1

容平: 单请求异步处理

出于当Android
UI线程中无能够开有耗时操作,比如网络要,大文件保留等,所以当付出被时常会面遇见异步处理的气象,我们太登峰造极的使状况是RxJava+Retrofit处理网络要

MyService myService = retrofit.create(MyService.class);
myService.getSomething()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this::updateUI, this::showError);

为了使代码看起来简洁点,这边还使用了lambda表达式, 
updateUI和 showError需要在当前类中实现,比如:

public void updateUI(Data data){      
//TODO something
}
public void showError(throwable t){      
//show error msg
}

观二: 多异步请求连续调用

这种景象其实呢颇普遍,我们做用户头像编辑的利用,一般就是会发出三只请求需要连接调用:

要头像上传的地址
齐传头像
履新用户信息
于平常底代码里,我们需要一步步callback嵌套下来,代码冗长太掉价,而且不好维护,使用RxJava链式调用处理代码逻辑就是会异常清楚

Observable.just(1)
  .map(this::task1)
  .map(this::task2)
  .map(this::task3)
  .subscribeOn(Schedulers.io())
  .observeOn(AndroidSchedulers.mainThread())
  .subscribe(this::updateUI,this::showError);
这里的just发送的固定值1,没有实际意义,
只是我觉得这样更信息 你也可以用Observable.create创建observable。

场景三: 多异步请求合并处理

偶尔在项目被,我们会遇到组合多独请求的结果后,再更新UI的景况,比如我们项目面临即生一个起多只请求地址获取通知数据,然后在APP上再遵照日各个组合后显得的要求,这时候我们即便得用RxJava的zip函数来处理了

MyService myService = retrofit.create(MyService.class);
Observable o1 = myService.getNotification1();
Observable o2 = myService.getNotification2();
Observable.zip(o1,o2, this::combiNotification)
             .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this::updateUI,this::showError);
public List<Notification> combiNotification(List<Notification> n1, 
List<Notification> n2){      
//TODO 合并通知列表
}
zip函数会等待两个请求都完成后,调用我们的合并方法combiNotification,等合并处理后再回调subscribe中的方法。

场面四: 定时轮询

RxJava还专门适合对定时轮询任务的拍卖,
一种植典型的例子就是APP提交了一个职责为后台异步处理,假设后台处理需1-2分钟左右,我们用定时到后台查询进度,并创新到UI上,
传统的做法是故Handler的postDelay方法,用RxJava实现的语句就会见大简单

Subscription subscription =  Observable.interval(2, TimeUnit.SECONDS)
                .map(this::getProgress)
               .takeUntil(progress -> progress !=  100)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<Long>() {                    
                  @Override
                  public void onCompleted() {                       
                  //TODO finished                    }

                 @Override
                 publi void onError(Throwable e) {                    }

                 @Override       
                 public void onNext(int progress) {                         
                //TODO update progress
                    }
                });
我们以定时2秒查询一次,直到进度progress=100为止,自动终止轮询。

以上各种RxJava方法都是异步耗时调用,考虑到Activity的脱离时恳求还没有好,我们得以Activity的OnDestroy方法被取消RxJava调用

subscription.unsubscribe();

正文作者: 阳春面本文链接:
http://appkfz.com/2017/09/01/best-scene-use-rxjava/版权声明:
本博客所有文章除特别声明外,均运用 CC BY-NC-SA 3.0
许可协商。转载请注明出处!

网站地图xml地图