kotlin协程小结

runBlocking:不是 GlobalScope 的 API,可以独立使用,区别是 runBlocking 里面的 delay 会阻塞线程,而 launch 创建的不会。viewModelScope :是在ViewModel KTX扩展中已定义的CoroutineScope(协程作用域),所有的协程都必须在一个作用域内运行。用的结构化并发机制能帮助追踪运行在协程中的任务,比如在不需要协程的时候取消任务,协程运行时追踪任务,协程执行失败时传播错误信号。某些库还提供自己的协程作用域,可用于结构化并发。...
摘要由CSDN通过智能技术生成

协程是什么:

  • 协程是Kotlin中有特色的一项技术,大部分编程语言没有协程这个概念。协程可简单理解成轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的。一个线程内可创建多个协程,协程可在编程语言层面实现不同协程之间的切换,从而在单线程模式下模拟多线程的效果。其中的原理是协程可在某个地方挂起,并且可以重新在挂起处继续运行。而代码执行时的挂起与恢复完全由编程语言控制,与操作系统无关。

协程特点:

轻量

可以在单个线程上运行多个协程,因为协程支持挂起,不会使正在运行协程的线程阻塞。挂起比阻塞节省内存,且支持多个并行操作

内存泄漏更少

用的结构化并发机制能帮助追踪运行在协程中的任务,比如在不需要协程的时候取消任务,协程运行时追踪任务,协程执行失败时传播错误信号

内置取消支持

取消操作会自动在运行中的整个协程层次结构内传播

jetpack集成

许多 Jetpack 库都包含提供全面协程支持的扩展。某些库还提供自己的协程作用域,可用于结构化并发。


协程使用:

提示:Kotlin没有将协程纳入标准库的API中,而是以依赖库的形式提供。 使用前需在app/build.gradle文件中添加如下依赖库

例如:

	implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1"
	//用于android
	implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1"	

代码实例

class LoginViewModel(
    private val loginRepository: LoginRepository
): ViewModel() {
   

    fun login(username: String, token: String) {
   
        //新建一个协程,从UI线程移出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值