改造+ RxAndroid:缓慢请求阻止其他请求

时间:2015-06-10 10:18:11

标签: android retrofit rx-android

我遇到的问题是由于我的后端有时回复缓慢。事实上,我使用Retrofit + RxAndroid与我的服务器通信,当我做多个请求时,似乎一次只执行一个请求。有没有办法增加这个限制以避免阻止等待请求?

谢谢。

编辑:

想象一下,我正在为长时间的后台进程做一个请求。

retrofitService.getLongBackgroundProcess(url)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> { //doing something with the result });

与此同时,我正在向可立即响应的服务发出另一个请求。

retrofitService.getVeryVeryFastResponse(url)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> { //doing something with the result });

我的第一个请求是阻止执行第二个请求..这是我的问题。你知道为什么我能做什么以及如何同时执行这两个请求呢?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以像这样控制自己执行请求的位置:

retrofitService.getImage(url)
.subscribeOn(Schedulers.io()) // or .subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(bitmap -> myImageView.setImageBitmap(bitmap));

有许多调度程序可用。请查看此处的文档:http://reactivex.io/documentation/scheduler.html

关于主题的好读物:http://blog.danlew.net/2014/10/08/grokking-rxjava-part-4/

答案 1 :(得分:0)

似乎问题既不是改造也不是rxandroid。我的后端似乎是问题所在。

后端花了太长时间才发回请求的响应,因此我将我的长处理作业传递给后台,然后直接回复给用户。这样效率更高,并且不会阻止Android客户端上的可用线程。

感谢您的帮助。