Kotlin学习手记,android音视频开发

本文探讨了Kotlin协程在Android应用中的使用,特别是针对音视频开发。介绍了 DEFAULT 和 UNDISPATCHED 调度器的区别,以及如何在回调中使用协程,特别提到了CONFLATED通道模式适用于状态更新。还讨论了不同Channel类型的使用场景,如RENDENZVOUS、UNLIMITED、CONFLATED和BUFFERED,并展示了Select在并发任务选择中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果是应用的话,主要掌握框架级别的使用即可,语言级别的支持api来源于标准库,写起来比较麻烦也非常难理解。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里launch会进行一次调度 ,delay会进行一次调度,每次调度完成会执行一次resume, 最终协程体执行完毕会执行一次resume, 所以内部有n个挂起点的协程体会执行n+2次resume.

在这里插入图片描述

DEFAULT 立即开始调度 和 UNDISPATCHED 立即开始执行协程体,这两个含义的区别是 DEFAULT 只是立即启动协程执行可能是异步的,而后者是直接执行协程体中的代码了。LAZY 是先创建协程体,然后在未来的某个时刻才去启动执行。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

UNDISPATCHED 立即开始执行协程体,如果遇到挂起点,就切回主流程了,后面的协程体继续执行在单独的调度器。


import kotlinx.coroutines.*



@ExperimentalCoroutinesApi

suspend fun main() {

    println("start")

    testDefaultMode()

//    testAtomicMode()

//    testLazyMode()

//    testUNDISPATCHEDMode()

    println("finish")

}



suspend fun testDefaultMode() {

    val defaultMode = GlobalScope.launch(start = CoroutineStart.DEFAULT) {

        println("aaa")

        delay(3000)

        println("bbb")

    }

    println("222")

    defaultMode.join()

}



@ExperimentalCoroutinesApi

suspend fun testAtomicMode() {

    val defaultMode = GlobalScope.launch(start = CoroutineStart.ATOMIC) {

        println("aaa")

        delay(3000)

        println("bbb")

    }

    println("222")

    defaultMode.join()

}



suspend fun testLazyMode() {

    val defaultMode = GlobalScope.async(start = CoroutineStart.LAZY) {

        println("aaa")

        delay(3000)

        println("bbb")

    }

    println("222")

    defaultMode.await()

}



@ExperimentalCoroutinesApi

suspend fun testUNDISPATCHEDMode() {

    val defaultMode = GlobalScope.launch(start = CoroutineStart.UNDISPATCHED) {

        println("aaa")

        delay(3000)

        println("bbb")

    }

    println("222")

    defaultMode.join()

} 

在这里插入图片描述

Default和IO线程的区别,IO内部多了一个队列的维护

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值