55了解 Flutter 的 Thread Model(线程模型).pdfVIP

55了解 Flutter 的 Thread Model(线程模型).pdf

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

文档评论(0)

东山书苑 + 关注
实名认证
文档贡献者

业务以学生学习成长为中心,为外语培训、中小学基础教育、学前教育,提供各种学习资料支持服务。

1亿VIP精品文档

相关文档