- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
了解 Flutter 的 Thread
Model (线程模型)
Flutter Architecture overview
从图中可以看出 Flutter 有3部分组成:
1. Framework(Dart) :我们在写 Flutter 应⽤中,直接接触的
2. Engine(C/C++) :引擎层,提供核⼼ 术,例如
Skia :2D图形渲染库
Dart :⼀个⽤于垃圾收集的⾯向对象语⾔的 VM,DartVM
有⾃⼰的线程池
s ell:不同的平台有不同的 s ell,例如有 Android和
iOS 的 s ell
3. Embedder(Platform Specific) :嵌⼊层,为 Engine 创建和管
理线程,作⽤是把 Engine 的 task runners (任务运⾏器)
运⾏在嵌⼊层管理的线程上。
实现 Isolate 的线程由 Flutter 创建和管理,除了实现 Isolate 的线
程,Flutter 还有其余的线程,本篇⽂章探讨 Flutte 的 t reading
model (线程模型)。
创建和管理线程
在 Flutter Engine 中定义了四种 Task Runners (任务运⾏器),
Task Runners 是需要运⾏在平台提供的线程上的, 所以 Flutter
Engine 是不创建和管理线程的,是由 Embedder 为 Flutter
Engine 创建和管理线程 (包括线程⾥的消息循环),这四种 Task
Runners 分别是:
Platform Task Runner
UI Task Runner
GPU Task Runner
IO Task Runner
理解这四种 Task Runner ,可以让我们知道我们写的代码是运⾏在
哪个线程上,从⽽知道可以做什么,不可以做什么。
Platform Task Runner
所在的线程
Platform Task Runner 运⾏所在的线程叫 Platform T read,
Platform T read 必须要运⾏在平台的主线程上。
Android iOS
主线程 主线程
功能
处理平台 (Android/iOS)的消息
Q&A
为什么⼀定要是平台的主线程?
因为 Platform Task Runner 的功能是要处理平台的消息,但
是平台的 API 都是只能在主线程调⽤,所以 Platform Task
Runner 运⾏所在的平台的线程必须是主线程
⼀个 Flutter Engine 有⼀个还是多个 Platform T read?
⼀个 Flutter Engine 对应⼀个 Platform T read (⼀个
Flutter 应⽤启动的时候会创建⼀个 Engine 实例,Engine
创建的时候会创建⼀个 Platform T read 供 Platform Task
Runner 使⽤)
如果阻塞 Platform T read 会有什么后果?
阻塞 Platform T read 不会直接导致 Flutter 应⽤的卡顿 (跟
iOS 、Android 主线程不同)。尽管如此,也不建议在这个
Runner 执⾏繁重的操作,⻓时间卡住 Platform T read 应⽤
有可能会被系统 Watc dog 强杀。
UI Task Runner
所在的线程
UI Task Runner 运⾏所在的线程叫 UI T read,UI T read 对必须
运⾏在平台的哪个线程没有特别要求,但在
您可能关注的文档
- BRC_高盛面试指南.pdf
- 3搭建 Flutter 开发环境.pdf
- 按键检测例程说明文档.pdf
- 01-为什么要学习算法与数据结构.pdf
- BRC_中信建投校园招聘面试经验1.pdf
- BRC_中信建投校园招聘面试经验3.pdf
- 宠物版特别功能使用说明.pdf
- UART动作例程说明文档.pdf
- ADC动作例程说明文档.pdf
- 03-课程总览&算法复杂度.pdf
- 2023年12月陕西省山阳县消防救援大队招考2名财务人员笔试历年高频考点(考察重点荟萃)附答案详解.docx
- 2023年11月河北省地质矿产勘查开发局事业单位选聘172名工作人员笔试历年高频考点(难、易错点荟萃)附带答案详解.docx
- 2023年10月浙江省金华市教育局直属学校(单位)面向2024届毕业生公开招聘40名事业编制教师(工作人员)1笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
- 2023年11月新疆生产建设兵团第十三师淖毛湖经济技术开发区管委会竞聘6人(第六轮)笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
- 2024年广西定向复旦大学招录选调生2024年国家公务员考试考试大纲历年真题4145笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
- 2023年11月浙江温州市洞头区机关事业单位(国企)第五期公开招聘编外用工20人笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
- 2023年12月江苏盐城市教育局直属事业单位选调工作人员笔试历年高频考点难、易错点摘选答案详解(附后).docx
- 2023年11月山东临沂市蒙阴县统计局公开招聘派遣人员笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
- 2023年11月下半年浙江湖州南太湖新区管理委员会下属事业单位招考聘用7人笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
- 2023年山东德州市文化和旅游局所属事业单位招考聘用8人笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
文档评论(0)