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小时 的数据,网上找了很久都没发现相关的资料。
在点击第二个tab(i.e., 6小时)的时候调用unsubscribe()把旧的Observer取消订阅,再在 新的 Observer上调用subscribe()。######这只会忽略第一个请求的响应,但是第一个请求还是会执行的。######没有,暂时以解决问题为主;优化可以后面再做。######回复 @zigzagroad : 请问你是还有别的方式可以实现这个需求吗?######谢谢了 通过你的方法已经解决了######这是扔掉(忽略掉)响应。不过也能达到目的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。