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

发布于 2021-11-27 17:56:25 字数 924 浏览 752 评论 6

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小时 的数据,网上找了很久都没发现相关的资料。



如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

飘然心甜 2021-12-02 05:40:04

这是扔掉(忽略掉)响应。不过也能达到目的。

归属感 2021-12-02 05:34:31

谢谢了 通过你的方法已经解决了

乞讨 2021-12-02 01:56:40

回复
请问你是还有别的方式可以实现这个需求吗?

落墨 2021-11-30 11:03:01

没有,暂时以解决问题为主;优化可以后面再做。

已下线请稍等 2021-11-30 00:43:03

这只会忽略第一个请求的响应,但是第一个请求还是会执行的。

本宫微胖 2021-11-28 16:10:44

在点击第二个tab(i.e.,
6小时)的时候调用unsubscribe()把旧的Observer取消订阅,再在
新的
Observer上调用subscribe()。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文