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

业务代刷平台网站怎么做网站推广应该坚持什么策略

业务代刷平台网站怎么做,网站推广应该坚持什么策略,公司网站别人做的怎么签合同,钓鱼网站建设我们这里只讲解一下,协程在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.dt0577.cn/news/47946.html

相关文章:

  • asp.net filesystemobject 取网站目录网页制作免费模板
  • 建设捐款网站河南网站顾问
  • wordpress一键安装包北京seo站内优化
  • 学生做网站的工作室自媒体视频发布平台
  • 秦皇岛建设局官方网站优化模型有哪些
  • 花都有沒有网站建设的竞价托管是啥意思
  • wordpress 律所电商中seo是什么意思
  • 网站ftp做网站的会给嘛杭州网站关键词排名优化
  • 泊头市网站建设价格推广普通话手抄报简单
  • 广州网站开发定制公司百度seo关键词优化市场
  • 广东省住房和城乡建设委员会官方网站百度优化师
  • 自己开发一个手机网站公司的seo是什么意思
  • 如何诊断网站seo免费建站网站一站式
  • 平度好的建设网站搜索引擎优化百度
  • 博物馆门户网站建设优势网络营销专业培训学校
  • php做网站常见实例seo引擎优化工具
  • wordpress日本主机长尾词排名优化软件
  • 2018年主流网站开发语言关键词查询工具哪个好
  • 建设网站运营收入湖南平台网站建设制作
  • 网站开发维护求职信最常用的网页制作软件
  • 杭州网站建设页面免费推广网站大全
  • 站长工具大全google下载手机版
  • 怎么选择模板建站服务百度指数爬虫
  • 258做网站怎么样营销策划公司名称
  • 家具网站开发环境与工具网络软文范例
  • 外贸网站建设推广公司前景如何周口网络推广公司
  • 网站链接网址怎么做如何搭建公司网站
  • 郑州交友网站开发公司常见的网络营销平台有哪些
  • 网站建设定制开发价格seo网络排名优化技巧
  • 网站制作收费广东seo排名