IOException: Canceled

应该说这是我第一次遇到这个Exception:

具体情形

在 logout 的Activity中,为了更好的用户体验,在用户点击退出后,该 LogoutActivity 就直接 finish 了,不去鉴别是否登出成功。

由于一系列的需求问题,那么这个逻辑需要有所改动,在改动过程中发现,这个接口的回调都函数都没有被调用。

一步一步的跟着代码走发现,最中在 拦截器 中,这个请求是发出了异常:IOException: Canceled。

原因

在最后分析发现了原因:为了节约内存的使用,在每个Activity 的中,都有一个请求的队列,在发出请求的同时将请求加入到队列中,在 onDestroy 的方法里面,都 unsubscribe 了整个请求的队列,那么原因就很清晰了,这个请求被 cancel 掉了。

总结

不能说之前的代码是错误的,只是每个新的迭代都会有新的需求,仔细仔细再仔细。

你可能感兴趣的:(开发日常)