Android里的协程( Coroutine)理解

news2024/11/6 21:02:49

协程是Android采用的实现并发的一种方式,对于用户来说它可以理解为一个特殊的代码块,它使用看起来是串行的编程方式,实现程序并行,你不再需要考虑底层的线程、回调等东西,框架来帮你解决。

你需要记住的仅仅是,协程内的代码块是串行执行的(当然,又嵌套了子协程除外)。协程与它的调用者是并行进行的(所谓的不阻塞调用者)。当然,你也可以强制阻塞调用者,方法是在协程外部的语句中强制使用该协程的await函数。

协程有一个所属作用域范围(scope),它只在该范围有效时运行,范围没了,即使协程还在运行,也要杀死。一般有三种范围(GlobalScope、lifecycleScope、viewModelScope),GlobalScope作用域是app级的,app不死该范围不死、里面的协程也就不死。lifecycleScope是有生存期概念的对象所在作用域,比如activity、fregment,他们都具备lifecycleScope的特性,协程可以在这些作用域中运行。还有viewModelScope,它是后台viewModel对象自带的作用域。Android为了防止内存泄漏,引入了作用域,所有的变量和程序,都依附于特定的作用域,协程也不例外。另外,还有一个特定的调用协程的关键词runBlocking,它调用的协程会阻塞调用者,也就是说其实就是和调用者完全串行进行了,不再是协程了。

还有,用户可以指定协程在哪类线程上执行。线程分为三类:Default、Main、IO。Main类线程用于操作主界面,IO类线程用于访问磁盘、网络等操作。同一个协程,用户可以动态指定在不同线程上运行,比如在IO线程上访问网络,获得一个字符串,然后切换到Main线程,显示在界面中。

总之,协程只是特殊的代码块,块内串行、块间并行。协程依附于特定的作用域。协程可以动态调度到不同线程上执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大客户营销数字销售实战讲师培训讲师唐兴通专家人工智能大模型销售客户开发AI大数据挑战式销售顾问式销售专业销售向高层销售业绩增长创新

唐兴通 销售增长策略专家、数字销售实战导师 专注帮助企业构建面向AI数字时代新销售体系,擅长运用数字化工具重塑销售流程,提升销售业绩。作为《挑战式销售》译者,将全球顶尖销售理论大师马修狄克逊等理论导入中国销售业界。 核心专长&…

es数据同步(仅供自己参考)

数据同步的问题分析: 当MySQL进行增删改查的时候,数据库的数据有所改变,这个时候需要修改es中的索引库的值,这个时候就涉及到了数据同步的问题 解决方法: 1、同步方法: 当服务对MySQL进行增删改的时候&…

入门车载以太网(3) -- 网络层

目录 1. 网络通信示例 2. IP地址类别 3. IP数据报 4. 小结 今天继续车载以太网,聊聊网络层。 1. 网络通信示例 我们首先回顾车载以太网的数据传输模型。 从7层开始(车载以太网模糊了5-7层,统称应用层),每个中间层都为上层提供功能&…

六个核桃斥资千万研究脑健康,核桃健脑作用科学具象化了

健康,是这两年热度居高不下的社会话题。对健康的追求影响了诸多领域的发展,上至尖端科研,下至日常接触的食品饮料,都已被卷入大势。 其中,“脑健康”这个听起来更前沿的话题,又已经成为格外重要的一个领域…

基于Multisim光控夜灯LED电路(含仿真和报告)

【全套资料.zip】光控夜灯LED电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.采用纯数字电路,非单片机。 2.通过检测周围光线,光线暗且有声音时自动开灯…

【go从零单排】go中的基本数据类型和变量

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 基本类型 go中的string、int、folat都可以用连接boolen可以用逻辑表达式计算 package mainimport "fmt&quo…

前端学习笔记—Vue3特性

一、 Vue3与Vite构建工具简介 image.png image.png image.png image.png Vite构建工具(其他的打包工具有webpack,grunt,gulp) image.png image.png 构建 二、创建Vue3项目 vite在TypeScript结合使用上,直接开箱即用&am…

DICOM标准:DICOM图像核心属性概念详解——关于参考帧、病人位置、病人方位、图像位置和图像方向、切片位置、图像像素等重要概念解析

目录 1、参考帧模块属性 2、模态(Modality): 3、病人位置(Patient Position): 4、 病人方位(Patient Orientation): 5、 图像位置和图像方向: 6、切片位置 7、图像像素模块 7.1 图像像素属性描述 7.1.1 每个像素的样本 7.1.2 光度解释 7.1.3 平面结构 7.1.…

短视频矩阵系统的源码, OEM贴牌源码

针对矩阵短视频系统的源码功能设计,我们开发设计了以下核心模块: 1. 短视频一键发布功能:允许用户快速、便捷地发布短视频内容 2. 批量图文剪辑:支持同时编辑和处理多张图片与文本的组合,提高编辑效率 3. 批量剪辑短…

6款IntelliJ IDEA插件,让Spring和Java开发如虎添翼

文章目录 1、SonarLint2、JRebel for IntelliJ3、SwaggerHub插件4、Lombok插件5、RestfulTool插件6、 Json2Pojo插件7、结论 对于任何Spring Boot开发者来说,两个首要的目标是最大限度地提高工作效率和确保高质量代码。IntelliJ IDEA 是目前最广泛使用的集成开发环境…

新能源汽车与公共充电桩布局

近年来,全球范围内对新能源汽车产业的推动力度不断增强,中国新能源汽车市场也呈现蓬勃发展的势头,在政策与市场的共同推动下,新能源汽车销量持续增长。然而,据中国充电联盟数据显示,充电基础设施建设滞后于新能源汽车数量增长的现状导致充电桩供需不平衡,公共充电桩服务空白区域…

健身房管理智能化:SpringBoot技术指南

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了健身房管理系统的开发全过程。通过分析健身房管理系统管理的不足,创建了一个计算机管理健身房管理系统的方案。文章介绍了健身房管理系统的系统分析部…

Abaqus随机骨料过渡区孔隙三维网格插件:Random Agg ITZ Pore 3D (Mesh)

插件介绍 Random Agg ITZ Pore 3D (Mesh) V1.0 - AbyssFish 插件可在Abaqus内参数化建立包含水泥浆基体、粗细骨料、界面过渡区(ITZ)、孔隙在内的多相材料混凝土细观背景网格模型。 模型说明 插件采用材料映射单元的方式,将不同相材料赋值…

lora训练模型 打造个人IP

准备工作 下载秋叶炼丹器整理自己的照片下载底膜 https://rentry.org/lycoris-experiments 实操步骤 解压整合包 lora-scripts,先点击“更新” 训练图片收集 比如要训练一个自己头像的模型,就可以拍一些自己的照片(20-50张,最少15张&…

sheng的学习笔记-tidb框架原理

目录 TiDB整体架构 TiDB架构图 组件-TiDB Server 架构图 流程 关系型数据转成kv ​编辑 组件-TiKV Server​ 架构图 主要功能: 列簇 组件-列存储TiFlash 组件-分布式协调层:PD PD架构图 路由 Region Cache back off TSO分配 概念 解…

计算机网络:网络层 —— 边界网关协议 BGP

文章目录 路由选择协议动态路由协议边界网关协议 BGPBGP 的基本概念BGP-4 的四种报文 路由选择协议 因特网是全球最大的互联网,它所采取的路由选择协议具有以下三个主要特点: 自适应:因特网采用动态路由选择,能较好地适应网络状态…

【在Linux世界中追寻伟大的One Piece】多路转接select

目录 1 -> I/O多路转接之select 1.1 -> 初识select 1.2 -> select函数原型 1.3 -> 关于fd_set结构 1.4 -> 关于timeval结构 2 -> 理解select执行过程 2.1 -> Socket就绪条件 2.2 -> select特点 2.3 -> select缺点 3 -> select使用示例…

小语言模型介绍与LLM的比较

小模型介绍 小语言模型(SLM)与大语言模型(LLM)相比,具有不同的特点和应用场景。大语言模型通常拥有大量的参数(如 GPT-3 拥有 1750 亿个参数),能够处理复杂的自然语言任务&#xff…

双11花了“一部手机钱”买手机壳的年轻人,究竟在买什么?

【潮汐商业评论/原创】 这个双十一,Elsa在天猫多了一笔新支出——手机壳。和大家都熟悉的“义乌制造”不同的是,她的手机壳支出单件就已经到了500块,加上配套的手机链、支架、卡包、耳机壳,总共1000多元,足够买一部学…

03WIFI与蓝牙1——基于全志V3S的Linux开发板教程笔记

1. Kernel支持 1)配置 终端输入: make menuconfig使能如下部分: 2)编译 保存并退出后编译内核: make licheepi_zero_defconfig make menuconfig #配置内核,有需要的话配置 make -j16 make -j16 modu…