取消所有请求_Android中用Kotlin协程和Retrofit进行网络请求和取消请求

本文介绍了如何在Android中结合Kotlin协程和Retrofit进行网络请求,以及如何优雅地取消这些请求。通过创建CoroutineScope、使用CoroutineScope.cancel()来管理协程的生命周期,扩展Retrofit.Call以适配协程,并展示了三种不同的发起请求的方式:顺序执行、并行执行以及使用CallAdapter实现的 Deferred 方案。这些方法简化了网络请求的处理并提高了性能。
摘要由CSDN通过智能技术生成

前面两篇文章介绍了协程的一些基本概念和基本知识,这篇则介绍在Android中如何使用协程配合Retrofit发起网络请求,同时介绍在使用协程时如何优雅的取消已经发起的网络请求。

需要文章中demo完整代码的同学可以私我。

创建CoroutineScope

在前面的文章中我写到CoroutineScope.launch方法是一个很常用的协程构建器。因此使用协程必须先得创建一个CoroutineScope对象,代码如下:

CoroutineScope(Dispatchers.Main + Job())

上面的代码创建了一个CoroutineScope对象,为其协程指定了在主线程中执行,同时分配了一个Job

在demo中我使用的是MVP模式写的,所以我将CoroutineScope的创建放到了BasePresenter中,代码如下:

1f58e761f91d5b9c1e05f8dd85f5ebd8.png

使用CoroutineScope.cancel()取消协程

大家应该可以看到上面BasePresenter.detachView中调用了presenterScope.cancel(),那这个方法有什么作用呢,作用就是取消掉presenterScope创建的所有协程和其子协程。

前面的文章我也介绍过使用launch创建协程时会返回一个Job对象,通过Job对象的cancel方法也可以取消该任务对应的协程,那我这里为什么不使用这种方式呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值