Kotlin 开发基础知识总结
1、Kotlin 协程 创建与启动-suspend
Kotlin 协程就像轻量级线程。它们是轻量级的,因为创建协程不会分配新线
程。相反,它们使用预定义的线程池和智能调度。调度是确定您接下来将执行哪
一项工作的过程。
此外,协程可以在执行过程中暂停和恢复。这意味着您可以有一个长时间运
行的任务,您可以一点一点地执行它。您可以暂停它任意次数,并在您再次准备
好时恢复它。
暂停和阻塞有什么区别?
对函数的阻塞:调用意味着从同一线程调用任何其他函数将停止父函数的执
行。接下来,这意味着如果您在主线程的执行上进行阻塞调用,您将有效地冻结
UI。在阻止呼叫完成之前,用户将看到一个静态屏幕,这不是一件好事。
暂停不一定会阻止您的父函数的执行。如果您在某个线程中调用挂起函数,
您可以轻松地将该函数推送到不同的线程。如果是繁重的操作,它不会阻塞主线
程。如果挂起函数必须挂起,它将简单地暂停其执行。这样你就可以释放它的线
程来做其他工作。一旦完成挂起,它将从池中获取下一个空闲线程,以完成其工
作。
1、创建协程的三种方式
(1)runBlocking():运行一个协程并且会阻塞当前线程,直到它完成。
(2)launch():启动一个新的协程,不会阻塞当前线程,会异步执行
代码,并且返回一个 Job,可以取消。
(3)async():跟 launch 相似,唯一不同的是它可以有返回值。async
和 await 是两个函数,这两个函数在我们使用过程中一般都是成对出现的。
async 用于启动一个异步的协程任务,await 用于去得到协程任务结束时返
回的结果,结果是通过一个 Deferred 对象返回的。