IOException: Canceled

本文记录了一次在Activity中遇到IOException:Canceled异常的经历。在更新逻辑时,发现接口回调未被调用,通过逐步排查发现请求在拦截器处抛出异常。最终定位到为节省内存资源,在onDestroy方法中取消了所有请求导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

具体情形

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

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

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

原因

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

总结

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值