一、CPU 密集型协程任务取消
----
在 协程中 , 定义在 kotlinx.coroutines 包下的 suspend 挂起函数 是可以取消的 ;
但是有一种协程任务 , CPU 密集型协程任务..., 是无法 直接取消的 ; 此类任务一直在 抢占 CPU 资源 , 使用 cancel 函数 , 无法取消该类型的 协程任务 ;
在进行 CPU 密集计算时 , 中间会有大量的中间数据 , 如果中途取消..., 大量的临时数据会丢失 , 因此在协程中 , 无法直接取消 CPU 密集型协程任务 , 这是对协程的保护措施 ;
CPU 密集型协程任务取消示例 : 在下面的 协程任务 中 , 循环 10000000..., 循环 10000000 次进行运算 , 然后在每次循环时 , 都调用 isActive 判定当前的协程是否被取消 ;
package kim.hsl.coroutine
import android.os.Bundle...自动处理协程退出
----
在协程中 , 可以执行 ensureActive() 函数 , 在该函数中会 自自动判定当前的 isActive 状态 , 如果当前处于取消中状态 , 自动抛出 CancellationException