开发者社区> 问答> 正文

RxJava结合Retrofit如何实现停止当前的网络请求? 400 请求报错 

 
 
mRetrofitService.getData(param);
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<DataBean>() {
            @Override
            public void onCompleted() {
            }

            @Override
            public void onError(Throwable e) {
                Log.wtf("onError", e);
            }

            @Override
            public void onNext(DataBean dataBean) {
                // TODO 操作界面
            }
        });
比如实现上图的功能,我点击1小时的时候数据还没加载完我就又点击了6小时, 这个时候我用上面的代码的话就是1小时和6小时都在进行网络请求, 但是最好的方式应该是停止1小时的网络请求,再去获取 6小时 的数据,网上找了很久都没发现相关的资料。

展开
收起
kun坤 2020-05-30 23:15:08 1228 0
1 条回答
写回答
取消 提交回答
  • 在点击第二个tab(i.e., 6小时)的时候调用unsubscribe()把旧的Observer取消订阅,再在 新的 Observer上调用subscribe()。######这只会忽略第一个请求的响应,但是第一个请求还是会执行的。######没有,暂时以解决问题为主;优化可以后面再做。######回复 @zigzagroad : 请问你是还有别的方式可以实现这个需求吗?######谢谢了 通过你的方法已经解决了######这是扔掉(忽略掉)响应。不过也能达到目的。

    2020-05-30 23:15:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Session:更加安全、可靠的数据中心网络产品更新 立即下载
Session:极简易用的全球化网络产品更新 立即下载
Session:弹性、高可用、可观测的应用交付网络产品更新 立即下载