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 客户端上的可用线程。
感谢您的帮助。
我遇到了一个问题,这是由于我的后端有时回复缓慢。事实上,我正在使用 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 客户端上的可用线程。
感谢您的帮助。