Tag: rx android

合并Observables列表,并等到所有完成

TL; DR如何将Task.whenAll(List<Task>)转换为RxJava ? 我现有的代码使用Bolts来build立一个asynchronous任务的列表,并等到所有这些任务完成之后再执行其他步骤。 本质上,它build立一个List<Task>并返回一个单独的Task ,当完成列表中的所有任务时,按照Bolts站点上的例子,这个 Task被标记为已完成。 我期待用RxJava取代Bolts ,我假设这种方法build立一个asynchronous任务列表(大小不是事先知道的),并将它们全部包装成一个单一的Observable是可能的,但我不知道如何。 我试着看着merge , zip , concat等等……但不能在List<Observable> ,我会build立起来,因为他们似乎一度只能在两个Observables上工作,如果我正确理解文档。 我正在努力学习RxJava并且RxJava还是很新的,所以请原谅我,如果这是一个明显的问题或者在文档中解释的话; 我试过search。 任何帮助将非常感激。

使用Retrofit 2.0和RxJava获取响应状态代码

我正在尝试升级到Retrofit 2.0,并在我的Android项目中添加RxJava。 我正在做一个API调用,并希望检索错误代码的情况下,从服务器的错误响应。 Observable<MyResponseObject> apiCall(@Body body); 在RxJava调用中: myRetrofitObject.apiCall(body).subscribe(new Subscriber<MyResponseObject>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(MyResponseObject myResponseObject) { //On response from server } }); 在1.9版本中,RetrofitError依然存在,我们可以通过以下方式获得状态: error.getResponse().getStatus() 如何使用RxJava进行Retrofit 2.0操作?

使用Rxjava Schedulers.newThread()与Schedulers.io()进行改造

在Retrofitnetworking请求中使用Schedulers.newThread() vs Schedulers.io()什么好处。 我见过很多使用io()例子,但我想明白为什么。 示例情况: observable.onErrorResumeNext(refreshTokenAndRetry(observable)) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread())… VS observable.onErrorResumeNext(refreshTokenAndRetry(observable)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread())… 我看到的原因之一是 – newThread()为每个工作单元创build一个新的线程。 io()将使用线程池 但是这个说法对应用程序有什么影响呢? 还有其他的方面呢?

rxJava调度程序用例

在RxJava中有5种不同的调度程序可供select: immediate() :创build并返回在当前线程上立即执行工作的调度程序。 trampoline() :创build并返回一个调度程序,该调度程序在当前工作完成后执行当前线程上的队列。 newThread() :创build并返回一个Scheduler,为每个工作单元创build一个新的Thread。 计算() :创build并返回一个调度程序,用于计算工作。 这可以用于事件循环,处理callback和其他计算工作。 不要在此调度程序上执行IO绑定的工作。 使用调度程序。 io()代替。 io() :创build并返回用于IO绑定工作的计划程序。 该实现由Executor线程池支持,该线程池将根据需要增长。 这可以用于asynchronous执行阻塞IO。 不要在这个调度器上执行计算工作。 使用调度程序。 计算()代替。 问题: 前三个调度程序非常自我解释, 然而,我对计算和io有点困惑。 什么是“IO绑定的工作”? 它用于处理stream( java.io )和文件( java.nio.files )? 它用于数据库查询吗? 用于下载文件还是访问REST API? comput()与newThread()有什么不同? 是所有的计算()调用是在一个单一的(后台)线程而不是一个新的(后台)线程每次? 为什么在做IO工作时调用comput()是不好的? 为什么在做计算工作时调用io()是不好的?