菜单

学学质地

2019年4月4日 - 注册免费送38元体验金
仅作学习资料征集,请勿转发,如需转发请联系原来的书文者

原创 2017-09-01 鸿洋
鸿洋
前些天给我们推荐的震古烁今福利来袭,还记得二零一八年的至极“玩Android”网址么?(可点击访问)

新近在看路虎极光xJava相关的小说,同事以前也做过部分享用,CRUISERxJava用起来依旧要命爽的,越发是四个页面需求多个网络请求,在支配那几个访问请求顺序、并发请求、战败重试、token生效等。

现阶段了,因为先天是已经更新到奥迪Q5xJava二了,所以本篇主要近期是SportagexJava贰就学资源的引荐,前面有机会会针对各样情状写壹篇实战类的小说。

先贴多少个必备的地点,以及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

能够在看完上边包车型地铁入门资料后,细细的看下官方的相干文章。

一、0基础到上手

其一12分推荐简书小编Season_zlc的“水管”种类,相信广大人都看过,看完你就领悟为什么叫“水管”种类了注册免费送38元体验金,~~

给初学者的TiguanxJava二.0学科(1)

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

给初学者的CRUISERxJava二.0课程(2)

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

给初学者的EnclavexJava贰.0科目(3)

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

给初学者的CRUISERxJava二.0科目(肆)

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

给初学者的奥迪Q5xJava贰.0学科(伍)

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

给初学者的奥迪Q叁xJava二.0课程(陆)

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

给初学者的BMWX叁xJava二.0课程(七)

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

给初学者的RAV④xJava二.0科目(八)

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

给初学者的君越xJava二.0学科(9)

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

注册免费送38元体验金 1

贴个二维码能够高达。

接下去还有简书小编南尘225一的奥迪Q7xJava二多级。

那只怕是最好的科雷傲xJava 二.x 入门教程(一)

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

那可能是最佳的KoleosxJava 二.x 入门教程(2)

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

那恐怕是最棒的EvoquexJava 2.x 入门教程(3)

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

那或者是最棒的PRADOxJava 贰.x 入门教程(4)

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

那只怕是最佳的LANDxJava 二.x 入门教程(5)

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

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

达成版刚好本公众号推送过,能够间接过去那说不定是最好的 LX570xJava 二.x
入门教程(完成版)
~

大多看完就早已对索罗德xJava二有自然的询问了,接下去便是越来越强硬的操作符的上学了~

2.操作符与实战

CSDN小编余志强的大切诺基xJava2操作符种类:

奇骏xJava create操作符的用法和源码分析

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

卡宴xJava map操作符用法详解

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

GL450xJava flatMap操作符用法详解

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

索罗德xJava concatMap操作符用法详解

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

帕杰罗xJava onErrorResumeNext操作符达成app与劳务器间token机制

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

瑞虎xJava retryWhen操作符达成错误重试机制

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

WranglerxJava 使用debounce操作符优化app搜索成效

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

中华VxJava concat操作处理多数据源

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

路虎极光xJava zip操作符在Android中的实际利用情形

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

锐界xJava switchIfEmpty操作符完成Android检查本地缓存逻辑判断

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

CR-VxJava defer操作符实现代码协理链式调用

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

combineLatest操作符的高级应用

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

还有个要命给力的开源项目,“Learn RxJava By Samples”:

注册免费送38元体验金 2

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

包蕴格外多的Sample,你也足以在它的README上赢得越来越多音信~

该篇是对该品种的笔录,方便速查:

猎豹CS陆xJava 知识梳理(二) – LacrossexJava二 操作符实践

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

该作者方今也在写一些实战类的稿子:

奥迪Q7xJava二 实战知识梳理(壹) – 后台执行耗费时间操作,实时通报 UI 更新

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

冠道xJava贰 实战知识梳理(二) – 总括壹段时间内数据的平均值

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

智跑xJava二 实战知识梳理(三) – 优化搜索联想成效

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

揽胜xJava二 实战知识梳理(四) – 结合 Retrofit 请求音讯资源信息

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

奥迪Q三xJava二 实战知识梳理(伍) – 不难及进阶的轮询操作

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

卡宴xJava二 实战知识梳理(陆) – 基于错误类型的重试请求

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

QX56xJava2 实战知识梳理(7) – 基于 combineLatest 完结的输入表单验证

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

QX56xJava二 实战知识梳理(捌) – 使用 publish + merge
优化先加载缓存,再读取互连网数据的伏乞进度

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

3开源项目

精粹的种类很多推荐2个太多了也看不完~

就看天气

就看天气——是一款遵守 Material Design 风格的只看气候的应用程式。

https://github.com/xcc3641/SeeWeather

注册免费送38元体验金 3

注册免费送38元体验金 4

Paste_Image.png

极客晚报

极客晚报,1款纯粹的翻阅App,基于Material Design + MVP + LacrossexJava二 +
Retrofit + Dagger二 + Realm + Glide
是因为学习的目标做了那款Material
Design风格的简短的阅读使用,基本包涵了日前Android端开发最常用的主流框架,阅读内容根本面向程序员/极客,近年来包括:
果壳网晚报、微信精选、干货集中营、稀土丹佛掘金队、V贰EX

https://github.com/codeestX/GeekNews

注册免费送38元体验金 5

注册免费送38元体验金 6

Paste_Image.png

四 源码解析

推荐下张旭童的博客相信关注本公众号的很多都看过旭童的文章

RubiconxJava二 源码解析(1)

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

奇骏xJava二 源码解析(贰)

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

伍.适用场景

[本文小编: 凉面 本文链接: http://appkfz.com/2017/09/01/best-scene-use-rxjava/

版权评释: 本博客全数文章除越发申明外,均使用 CC BY-NC-SA 三.0
许可协商。转发请注脚出处!]

上面我们开头介绍福特ExplorerxJava最符合采用的各个景况,代码示例基于OdysseyxJava一

气象1: 单请求异步处理

是因为在Android
UI线程中不可能做壹些耗费时间操作,比如互联网请求,大文件保留等,所以在支付中时时会遇上异步处理的情景,我们最典型的利用境况是CRUISERxJava+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
}

场合二: 多异步请求几次三番调用

那种现象其实也很广阔,大家做用户头像编辑的利用,1般就会有八个请求必要一而再调用:

恳请头像上传的地方
上传头像
更新用户信息
在平时的代码里,我们供给一步步callback嵌套下来,代码冗长太寒碜,而且不佳维护,使用奥迪Q5xJava链式调用处理代码逻辑就会充显著晰

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的情景,比如大家项目中就有三个从多少个请求地址获取文告数据,然后在应用软件上再按时间种种组合后出示的须求,那时候大家就能够用OdysseyxJava的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中的方法。

气象四: 定时轮询

福特ExplorerxJava还专门吻合对定时轮询任务的拍卖,
壹种典型的事例便是应用软件提交了贰个任务给后台异步处理,假若后台处理必要一-二分钟左右,大家要求定时到后台查询进程,并更新到UI上,
守旧的做法是用Handler的postDelay方法,用昂科拉xJava实现的话就会要命不难

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为止,自动终止轮询。

以上种种宝马7系xJava方法都以异步耗费时间调用,思虑到Activity的退出时呼吁还并未有大功告成,大家供给在Activity的OnDestroy方法中打消RAV四xJava调用

subscription.unsubscribe();

正文小编: 炒粉本文链接:
http://appkfz.com/2017/09/01/best-scene-use-rxjava/版权评释:
本博客全数小说除尤其注解外,均选择 CC BY-NC-SA 三.0
许可商榷。转发请申明出处!

相关文章

发表评论

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

网站地图xml地图