classpath的作用_Kotlin CoroutineScope在组件生命周期中的重要作用分析

前言:

在上一次Kotlin协程调试与CoroutineName上下文元素组合详解中咱们对于协程的调试和给协程起名称进行了相关的学习,这次咱们来将焦点定位到协程范围(CoroutineScope)上来,关于这块其实在之前https://www.cnblogs.com/webor2006/p/11725866.html、https://www.cnblogs.com/webor2006/p/11730528.html已经详细研究过了,当我们在使用到协程的时候会涉及到如下几个关键元素或关键点:Job(本身协程执行的任务)、子协程、所运行的Context。而这次要学习的主题场景是Android的Activity,对于做过Android开发的人来说Activity应该是最最亲切的组件了,在Activity中我们做一些异步任务的时候都会开一个子线程去弄,否则就会ANR,比如说最典型的网络请求操作,而重点是如果我们的Activity如果退出了,其子线程应该也得退出,否则就会出现内存泄漏的情况出现,所以平常我们在使用像Okhttp来请求网络时在onDestroy处都会写上一个canTag()将其正在请求的异步网络给主动终止掉。

那上面说的跟咱们研究的主题有啥关系么?很大的关系,对于用Koltin来开发Android而言协程就代表了一个异步任务,而在使用协程时同样也得遵循当Activity被销毁时它里面开的若干个协程也能够终止掉,这也是咱们这次要来专门研究的主题,因为我们不可能针对不同的协程每个都单独去销毁,得要有一个统一的手段达成这个目的,这就是如标题所示的协程范围(CoroutineScope),

进一步了解CoroutineScope:

之前已经对于这个类曾研究过,这里打开这个类再来瞅一下,它里面有一个工厂函数,正好符合我们目前所要研究的场景:

1e4bfd3c1d527a69da5f264e310671c1.png

而还有另外一个实现就正如我们所举的Android Activity的场景了,看一眼:

beae54e0adc7a4372915dd34dd39ea9c.png

bfe6f739f051161b337d265e111d1840.png

而Dispatchers.Main其实在之前也遇到过,只是没使用过,跟进去瞅一下:

b1b7949949cf03f62c8785cda167cb90.png

这里大概读一下官方对它的说明:

85e49da5052c0bb3ec863e1f2db34735.png

而为啥之前看到了却木有使用它呢?因为:

7696a83ba0ae8284973d3cc6ae9f8f69.png

下面再来读一下CoroutineScope官方的关键描述,回忆一下:

07a021c8a02decdd86bafd932dfa2920.png

像平常我们大量用到的启动协程的launch就是CoroutineScope的扩展方法:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值