深入解析Kotlin 协程与 JetPack 组件

本文深入探讨Kotlin协程的本质,包括异步处理、回调机制、协程类型如GlobalScope和ViewModelScope,以及协程启动的launch方法。还介绍了挂起函数和async/await方法的应用,并提及了在Android开发中如何结合使用Kotlin协程和JetPack组件,如LiveData,以优化异步操作。最后提到了Retrofit中使用HTTP接口的suspend函数。
摘要由CSDN通过智能技术生成

可以使用单一实例模式扩展 LiveData 对象以封装系统服务,以便在应用中共享它们。

相关链接:https://developer.android.google.cn/topic/libraries/architecture/livedata

4、Kotlin协程

=============================================================================

4.1、异步的本质


什么是异步?

异步就是同时进行一个以上彼此目的不同的任务。

但是对于有前后依赖关系的任务,异步该如何处理呢?

利用异步中的回调机制处理。

为什么需要异步回调机制?

因为不同的任务之间存在前后的依赖关系。

异步回调机制有什么缺点?

代码结构过分耦合,遇到多重函数回调的嵌套耦合,也就是回调地狱,代码会难以维护。

解决回调地狱的方案有什么?

链式调用结构。

常见方式就是使用RxJava,它是反应函数式编程在Java中的实现。

但是RxJava中流的创建、转化与消费都需要使用到各种类和丰富的操作符,加大了RxJava的学习成本。

减少在无封装情况下使用RxJava,因为你无法保证团队里面的每一个成员都能看懂它,并且在修改时都能做出正确选择。

在串行的执行中,虽然代码确实是顺序执行的,但其实是在不同的线程上顺序执行的。那为什么在串行的执行中代码执行顺序一致,却还要使用回调呢?

因为串行的执行中,执行是阻塞式的,主线程的阻塞会导致很严重的问题,所以所有的耗时操作不能在主线程中执行,所以就需要多线程并行来执行。

在并行的执行中,异步回调其实就是代码的多线程顺序执行。那能不能既按照顺序的方式编写代码,又可以让代码在不同的线程顺序执行,自动完成线程的切换工作呢?

那就是Kotlin协程。

Kotlin 的协程是一种无栈协程的实现,它的控制流转依靠对协程体本身编译生成的状态机的状态流转来实现,变量保存也是通过闭包语法来实现的。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值