0

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

在我的情况下,第一个请求阻止了第二个请求的执行。这是我的问题。你知道为什么和我能做些什么来同时执行这两个请求吗?

谢谢。

4

2 回答 2

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/

于 2015-06-10T15:25:02.297 回答
0

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

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

感谢您的帮助。

于 2015-06-12T18:58:30.670 回答