前言
上一篇文章我们介绍了 协程的父子关系和结构化 ,本篇文章来看一下协程的取消。
在Android的日常开发中,我们经常会遇到这样的问题:
开启了一个耗时任务,但是在任务执行的过程中,由于某种原因,我们需要取消这个任务。
例如:
在页面刚打开的时候,需要去请求接口获取数据,然后再去渲染页面,如果用户在开启页面后还没等到数据返回,就关闭了页面,那么这个时候我们就需要取消这个请求,避免浪费资源以及可能带来的内存泄漏。
之前写过一篇文章介绍了在使用RxJava时如何通过取消任务来避免内存泄漏的问题,感兴趣的可以看下:
不管是线程,还是RxJava,又或者是协程,实际上都是面临一个问题 :如何取消一个正在运行的耗时任务?
协程和线程在取消这一块的一些概念非常相似,下面我们先来看下