协程异常的个人感悟与在Android中的用例

协程的异常机制是非常有意思的,如果协程的异常「传递」机制没有搞懂的话,基本上协程是在瞎写的。

而Android里面,有Activity、Fragment相关UI更新在后台状态是不需要更新的。
甚至一些网络访问在某些时刻就需要被取消或者「停止」后续操作,其实这里面的停止是带引号的,因为一旦网络请求发送了,那么意味着操作系统已经为其建立了IO的管道,所以作为APP开发者是控制「不到」的,但是由于APP已经处于后台了,那么我们的请求本质不应该再「响应」。
所以一般APP处于后台后,请求发送了,就会等待它执行完成,但是后续的UI或者业务是不应该继续再执行,因为它是浪费性能的操作。

不过回到异常机制,最主要就是了解传统的线程UncaughtExcetion和协程的异常区别。

协程异常还有CancellationException也是让新手比较迷惑的地方。

最后再提一下当一个最顶层的scope被Cancel,它也是一个非常有意思的场景。比如:后续的Launch会失效、之前的未完成的Launch会收到CancellationException等。

最后推荐大家实践协程和Flow等各个Sample的Github:Kotlin-Coroutine-Use-Cases-on-Android 「包含了非常丰富的实践例子」👍🏻

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值