Android Kotlin 协程 使用 原理.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

AndroidKotlin协程

Kotlin协程是⼀种轻量级的线程管理⽅案,特别常⽤于处理异步操作(如⽹络请求、数据库操

作等),相⽐传统的回调或AsyncTask更简洁易读。

基本使⽤

1.添加依赖

在build.gradle中添加协程依赖:

Groovy

1dependencies{implementationorg.jetbrains.kotlinx:kotlinx-coroutines-an

droid:1.6.4}

2.启动⽅式

1.launch-启动不返回结果的协程

Kotlin

1valscopeCoroutineScope(Dispatchers.Main)

2valjobscope.launch{

3//执⾏任务

4delay(1000)

5println(任务完成)

6}

2.async/await-启动返回结果的协程

Kotlin

1lifecycleScope.launch{

2//并⾏执⾏两个任务

3valdeferred1async(Dispatchers.IO){fetchData1()}

4valdeferred2async(Dispatchers.IO){fetchData2()}

5

6//等待结果并处理

7valresult1deferred1.await()

8valresult2deferred2.await()

9handleResults(result1,result2)

10}

3.runBlocking-阻塞当前线程直到协程完成

Kotlin

1//通常⽤于测试或main函数

2funmain()runBlocking{

3launch{

4delay(1000)

5println(协程完成)

6}

7println(主线程等待)

8}

3.协程作⽤域(CoroutineScope)

1.预定义作⽤域

•GlobalScope:全局作⽤域,⽣命周期与应⽤⼀致,不推荐直接使⽤

•lifecycleScope:与Activity/Fragment⽣命周期绑定(需导⼊lifecycle-viewmodel-ktx)

•viewModelScope:与ViewModel⽣命周期绑定(需导⼊lifecycle-viewmodel-ktx)

Kotlin

1/Activity/Fragment中使⽤,与⽣命周期绑定

2lifecycleScope.launch{...}

3

4//ViewModel中使⽤,与ViewModel⽣命周期绑定

5viewModelScope.launch{...}

6

7//全局作⽤域(谨慎使⽤)

8GlobalScope.launch{...}

2.⾃定义作⽤域

Kotlin

1//⾃定义作⽤域,可控制⽣命周期

2valcustomScopeCoroutineScope(Dispatchers.Main+Job())

3

4//在适当的时候取消

5customScope.cancel()

4.调度器(Dispatchers)

•Dispatchers.Main:Android主线程,⽤于更新UI

•Dispatchers.IO:⽤于IO操作(⽹络、数据库、⽂件读写)

•Dispatchers.Default:⽤于CPU密集型操作

•Dispatchers.Unconfined:不指定线程,由当前线程执⾏

Kotlin

1launch(Dispatchers.Main){

2//主线程:更新UI

3}

4

5launch(Di

您可能关注的文档

文档评论(0)

王阳 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档