当前位置: 首页 > news >正文

业务代刷平台网站怎么做百度词条官网入口

业务代刷平台网站怎么做,百度词条官网入口,济南网站建设公,网站建设软件kan我们这里只讲解一下,协程在Android项目中常见用法,原理知识不在进行说明了。 依赖 lifecycleScope只能在Activity、Fragment中使用,会绑定Activity和Fragment的生命周期。依赖库: implementation androidx.lifecycle:lifecycle…

我们这里只讲解一下,协程在Android项目中常见用法,原理知识不在进行说明了。

依赖

lifecycleScope只能在Activity、Fragment中使用,会绑定Activity和Fragment的生命周期。依赖库:

implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.0'

viewModelScope 只能在ViewModel中使用,绑定ViewModel的生命周期。依赖库:

implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0'

场景一

 lifecycleScope.launch {println("MainActivity.onCreate 开始")for (i in 0..5) {queryAdministrativeBoundaries()}println("MainActivity.onCreate 结束")}private suspend fun queryAdministrativeBoundaries(): Boolean {return suspendCancellableCoroutine { mCancellableCoroutine ->thread {Thread.sleep(3000)println("MainActivity.queryAdministrativeBoundaries 这里进行耗时操作")if (mCancellableCoroutine.isActive) {mCancellableCoroutine.resume(true)}}}}

场景二

并发多线程需求处理:

 /*** 多线程并发处理* kotlin 为我们提供了Mutex实现线程安全,Mutex通俗点来说就是kotlin的锁,和java 的synchronized和RecentLock对应。* 使用mutex.withLock {*} 即可实现数据的同步*/val mutex = Mutex()fun concurrent2() {var count = 0repeat(10000) {//重复1000次,每次开启一个协程,count自增1CoroutineScope(Dispatchers.Default).launch {mutex.withLock {count++}println("中间值:$count")}}}

并发单线程需求处理:

    /*** 创建协程作用域,使用 Unconfined,这样在协程被挂起前都不会改变线程,也就是说协程始终运行在单线程中*/fun singleThread() {val scope = CoroutineScope(Dispatchers.Unconfined)var count = 0repeat(1000) {//重复1000次,每次开启一个协程,count自增1scope.launch {println("线程id:${Thread.currentThread().id}")//这个线程始终不会变,除非你在这里挂起count++println(count)}}}

基本知识:

不管是指定协程的运行线程,还是临时切换线程,运行完毕会切换回来,都是通过 Dispatchers 来调度的。常用的线程调度为:

  • Dispatchers.Main Android主线程
  • Dispatchers.Unconfined 当前CoroutineScope的线程策略
  • Dispatchers.Default 默认值,为JVM共享线程池
  • Dispatchers.IO IO线程池,默认为64个线程

GlobalScope,还有要一些常见的CoroutineScope对象:

  • lifecycleScope 生命周期范围内,用于Activity组件
  • coroutineScope{} 一个suspend方法,创建一个新的作用域,并在该作用域内执行指定代码块,它并不启动协程。
  • runBlocking{} 是一个裸方法,创建一个协程,并阻塞当前线程,直到协程执行完毕。前面说过,这里不再赘述。
  • runBlocking 与 coroutineScope 的主要区别在于后者在等待所有子协程执行完毕时不会阻塞当前线程。
  • withContext(){}一个suspend方法,在给定的上下文执行给定挂起块并返回结果,它并不启动协程,只会(可能会)导致线程的切换。用它执行的挂起块中的上下文是当前协程的上下文和由它执行的上下文的合并结果。withContext的目的不在于启动子协程,它最初用于将长耗时操作从UI线程切走,完事再切回来。
  • suspend挂起函数是不会阻塞线程的,它只会挂起协程,而不阻塞线程。
  • async是异步执行,withContext是同步执行。

参考文章:
https://www.cnblogs.com/kevin2022/p/16637415.html

Android Kotlin协程(挂起函数+协程作用域)

http://www.rdtb.cn/news/16741.html

相关文章:

  • 如何做能上传视频网站网络上哪里可以做推广
  • 注册一个做网站的公司好黑马培训机构
  • 浙江省台州市做网站多少钱站内推广和站外推广的区别
  • 网站目录怎么做301跳转南通seo网站优化软件
  • 适合做浏览器主页的网站淘宝关键词查询
  • 上海企业网站设计公司电话厦门seo新站策划
  • 建立网站的流程win7优化大师官网
  • 外贸公司网站如何做推广重庆旅游seo整站优化
  • 个人网站可以做网上支付吗seo站长工具 论坛
  • 宁波市网站排名优化如何建立网上销售平台
  • 政府门户网站建设费用北京seo如何排名
  • 花生棒做网站北京seo优化wyhseo
  • 营销推广方案模板谷歌seo优化排名
  • 厦门有做网站建设成都最新消息今天
  • 珠海企业网站建设费用长沙seo排名外包
  • 成都网站开发百度网盘网页版入口
  • 问答网站模板下载视频推广方案模板
  • 微商怎么做 和淘宝网站一样吗疫情防控最新政策
  • 如何通过网站后台修改网站设计网络推广方案
  • 南京做网站团队深圳网页设计公司
  • asp 网站源码北京百度推广优化
  • 山东网站建设公司哪家权威百度有效点击软件
  • 网站搜索优化排名免费seo公司
  • 台州建设工程信息网站志鸿优化网官网
  • 没内容的网站怎么优化代写新闻稿
  • 网站制作 网站建设 杭州双11销售数据
  • 网站指向wordpress成都百度搜索排名优化
  • 网络广告推广策划书谈谈对seo的理解
  • 做外汇最好的财经网站东莞网站建设方案报价
  • 郑州网络运营平台有哪些seo是什么意思 seo是什么职位