Android bug -- Retrofit java.io.IOException: Canceled

错误出现的场景描述

我们的项目中使用了Retrofit 结合 RxJava、RxAndroid 调用后台接口,在 Retrofit 中有个拦截器,去拦截打印log 信息。当调用

chain.proceed(newRequest)

方法的时候出现上述错误。

分析

这不是个必现的错误。只是调用某些接口才会出现。从Retrofit 的源码可以知道。当 Retrofit 的网络请求未完成,而观察者已经取消了订阅,就会报出这个异常。仔细想了下,根据我们的业务逻辑。在关闭一个Activity的时候可能会进行一次网络请求。当activity关闭的时候就会取消订阅。那么自然就会出现这个错误。

解决方案

  • 忍受这个bug,因为它并不影响使用。接口什么都能正确的调用。
  • 等待所有接口调用完成再关闭Acitivity

我的解决方案

确保所有的网络请求都完成后再关闭 Acitivity.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值