在一个遗留项目中,虽然大部分代码都是 Java 实现的,但其中已经有相当一部分使用了 Kotlin,甚至其中还大量使用了在当时可能是“先进的特性”——GlobalScope
。然而时过境迁,两年前,Kotlin 就已经开始摒弃 GlobalScope
的使用,将其在 IDE/lint 中识别为 delicate(精细的、脆弱的),并标记为警告黄。
原本是想找到一个方法可以将这些警告全部消除的,但后来发现这事有点微妙。由于对 Kotlin 及其相关的并发控制思想、语义、实现都了解甚少,稍微做了一些检索后,将几个可能会有用的链接汇集在这儿,后续再批量处理。
除了前面那篇官方的 blog 之外,还有,
- https://stackoverflow.com/questions/68599452/why-delicatecoroutinesapi-is-required-for-the-use-of-globalscope
- https://stackoverflow.com/questions/70205347/globalscope-launch-is-delicate-how-to-deal-with
- https://www.jianshu.com/p/6352a74129cd
- https://www.jianshu.com/p/fce9c7425a44
后面两篇是简书上国人写的方案,仍因了解过少而未敢贸然直接暴力采用。