错误出现的场景描述
我们的项目中使用了Retrofit
结合 RxJava、RxAndroid
调用后台接口,在 Retrofit 中有个拦截器,去拦截打印log 信息。当调用
chain.proceed(newRequest)
方法的时候出现上述错误。
分析
这不是个必现的错误。只是调用某些接口才会出现。从Retrofit 的源码可以知道。当 Retrofit 的网络请求未完成,而观察者已经取消了订阅,就会报出这个异常。仔细想了下,根据我们的业务逻辑。在关闭一个Activity
的时候可能会进行一次网络请求。当activity
关闭的时候就会取消订阅。那么自然就会出现这个错误。
解决方案
- 忍受这个
bug
,因为它并不影响使用。接口什么都能正确的调用。 - 等待所有接口调用完成再关闭
Acitivity
我的解决方案
确保所有的网络请求都完成后再关闭 Acitivity
.