Retrofit + RxAndroid:慢请求阻止其他请求

Retrofit + RxAndroid: slow request block others requests

我遇到了一个问题,这是由于我的后端有时回复缓慢。事实上,我正在使用 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 });

在我的案例中,第一个请求阻止了第二个请求的执行。这是我的问题。你知道为什么要同时执行两个请求吗?

谢谢。

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

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/

看来问题既不是retrofit也不是rxandroid。我的后端似乎是问题所在。

后台发回请求的响应时间太长,所以我把我的长处理作业交给后台,然后直接回复给用户。这样效率更高,并且不会阻塞 Android 客户端上的可用线程。

感谢您的帮助。