Flutter架构——线程模型

news2024/11/16 3:31:18

Flutter的架构分为框架、引擎和嵌入器层(Embedder),其中嵌入器层将Flutter嵌入各个平台。Flutter完整的架构图如下:
在这里插入图片描述
Flutter中的隔离是通过引擎层的一个线程来实现的,但是Flutter引擎线程的创建与管理又是由嵌入器负责的,也就是说嵌入器是平台引擎移植的中间代码。Flutter的引擎的运行架构图如下:
在这里插入图片描述
嵌入器中存在4个Runner,每个引擎各自对应一个UI Task Runner、GPU Task Runner、IO Task Runner,但是所有引擎共享一个Platform Runner.

  • Platform Task Runner
    Platform Task Runner 是 Flutter引擎的主Task Runner,因为平台的API只能在主线程中被调用,所以它对应Android上的主线程。Platform Task Runner 不仅可以处理Native平台的交互,还能与Flutter引擎交互。在创建每一个Flutter引擎的时候,都会创建一个Platform线程,供Platform Task Runner使用,即使Platform线程阻塞,也不会直接导致Flutter应用的卡顿。即便如此,也不建议在Platform Task Runner中执行耗时的操作,长时间卡住还是有可能会被系统强制杀死的。
  • UI Task Runner
    UI Task Runner 主要处理来自Dart Root isolate的代码、告诉Flutter引擎最终的渲染、Native Plugins的消息、timers(延时任务)、microtasks(微任务)以及异步的I/O操作、file handles等。
  • GPU Task Runner
    GPU Task Runner被用于执行与设备GPU相关的调用。GPU Task Runner运行的线程对应平台的子线程,并且和UI Task Runner运行在不同的线程上。如果GPU Task Runner耗时太久,同样会造成Flutter应用的卡顿。所以在GPU Task Runner中,不能执行耗时操作。
  • IO Task Runner
    IO Task Runner运行的线程也是对应平台的子线程。在Flutter开发中,当UI Task Runner和GPU Task Runner都出现过载时,就需要使用IO Task Runner执行一些预处理的读取操作,再上报给GPU Task Runner。因为只有GPU Task Runner才能接触到GPU,所以IO Task Runner相当于GPU Task Runner的助手。

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

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

相关文章

Qt个人项目——天气预报,内带QListWidget自定义组件,支持全球城市天气

个人项目,自己制作了一个天气预报,还有选择城市列表,列表分大洲区域选择,具体选择后再进行选择城市,可以更新城市数据,自定义了QListWidget,总体来说完成度比较高,难度也不大&#x…

【Linux】Linux环境基础开发工具使用(gcc/g++使用)

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:Linux ⭐代码仓库:Linux 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们的支持是我…

【Python】猎聘网招聘数据爬虫(Python网络爬虫课设简要)

【Python】猎聘网招聘数据爬虫(Python网络爬虫课设简要) 注: 本文仅供学习交流使用! 合肥学院-20信管-20302211009 项目文件可自行前往博客主页下载或联系作者qq(3416252112)。 爬取数据耗时约50分钟&am…

网络安全工程师面试题(附答案解析)

前言 有不少小伙伴面临跳槽或者找工作,本文总结了常见的安全岗位面试题,方便各位复习。祝各位事业顺利,财运亨通。在网络安全的道路上越走越远!。 注:所有的资料都整理成了PDF,面试题和答案将会持续更新&a…

路径规划算法:基于黄金正弦优化的路径规划算法- 附代码

路径规划算法:基于黄金正弦优化的路径规划算法- 附代码 文章目录 路径规划算法:基于黄金正弦优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…

Springboot事件监听

Springboot事件监听中主要有以下对象: 1、事件(event)可以封装和传递监听器中要处理的参数,如对象或字符串,并作为监听器中监听的目标。 2、监听器(listener)具体根据事件发生的业务处理模块&am…

机器学习 day14 ( 神经网络 )

神经网络的发展 最开始的动机:是通过构建软件来模拟大脑,但今天的神经网络几乎与大脑的学习方式无关 我们依据大脑中的神经网络,来构建人工神经网络模型。左图中:一个神经元可以看作一个处理单元,它有很多的输入/树突…

如何解决企业客户签收回执慢,缩短回款周期?

方案应用领域及行业 本方案适用于快消品行业的供应链管理和财务管理 方案应用背景 由于动产物权的政策变化,物权转移从交付时才开始发生效力。也就是说,新政之前,企业发出商品,开出销售发票,即可申请货物回款&#…

LLM 系列 | 05:ChatGPT Prompt的迭代优化

简介 梅子留酸软齿牙,芭蕉分绿与窗纱。日长睡起无情思,闲看儿童捉柳花。小伙伴们好,我是微信公众号 《小窗幽记机器学习》 的小编:卖冰棍的小男孩。 更多、更新文章欢迎关注微信公众号:小窗幽记机器学习。后续会持续…

Ubuntu的安装教程

文章目录 一、Ubuntu 的安装教程1、Ubuntu的镜像下载2、服务器版的安装教程2.1.1、允许 root 远程登录 3、桌面版的安装教程3.1.1、允许 root 远程登录 一、Ubuntu 的安装教程 1、Ubuntu的镜像下载 ​ 这里我选择阿里云的镜像下载你也可以选择Ubuntu的官网下载 Ubuntu官网 如…

【Set集合案例】成绩排序和不重复的随机数

Set集合案例:成绩排序和不重复的随机数 1.成绩排序 需求:用TreeSet集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合 ​ 要求:按照总分从高到底出现 思路:…

都2023年了,Python 和Java 哪个更适合做自动化测试?

大家好。从事软件测试很多年了,从各个大厂一路摸爬滚打,现在我有幸供职于字节跳动。个人也是从功能测试慢慢爬到了自动化测试这条路上。所以针对这个问题,我还有点发言权。 记得我一开始从功能准备转型到自动化测试,和很多“涉事…

Qt QPushButton背景图片

一、问题 使用控件显示图片缩略图,当点击控件时,弹出窗口显示完整的图片 二、分析 应该用按钮控件,用信号槽连接。按钮控件是有参数icon,但是只能显示控件中,不能覆盖在整个控件上。 三、方法一:使用st…

线段树算法(C++/C)

目录​​​​​​​ 一、线段树算法的概念 二、为什么需要线段树 三、线段树算法的实现 (1)建树 (2)查询 (3)修改 (4)综合代码,求区间和 (5&#xff…

从“互联网+”到“互联网医疗+”,免费互联网医院开创新格局

随着互联网的发展,各行各业都在积极探索“互联网”时代下的创新模式。其中,医疗领域也开始了自己的变革之路,从传统的医疗模式转向了“互联网医疗”的新型格局。免费互联网医院的出现,则更是为这一变革注入了新的活力。 所谓“互联…

【嵌入式系统应用开发】FPGA——基于HC-SR04超声波测距

文章目录 前言环境目标结果 1 实验原理1.1 超声波原理1.2 硬件模块时序图1.3 模块说明 2 设计文件2.1 时钟分频2.2 超声波测距2.3 超声波驱动 3 实验验证3.1 编译3.3 硬件测试 总结 前言 环境 硬件 DE2-115 HC-SR04超声波传感器软件 Quartus 18.1 目标结果 使用DE2-115开发…

【Linux驱动】认识驱动(驱动的概念、驱动分类)

目录 1、什么是驱动? 2、应用程序调用驱动基本流程 3、file_operations 结构体 4、驱动的分类 1、什么是驱动? 驱动就是一段程序,能够获取外设或者传感器数据、控制外设。驱动获取到的数据会提交给应用程序。 在 Linux 中一切皆为文件&…

【实用篇】Elasticsearch02

文章目录 分布式搜索引擎021.DSL查询文档1.1.DSL查询分类1.2.全文检索查询1.2.1.使用场景1.2.2.基本语法1.2.3.示例1.2.4.总结 1.3.精准查询1.3.1.term查询1.3.2.range查询1.3.3.总结 1.4.地理坐标查询1.4.1.矩形范围查询1.4.2.附近查询 1.5.复合查询1.5.1.相关性算分1.5.2.算分…

Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决

Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决 问题 Linux系统中,在rc.local里面配置的启动命令等不能能够在开机的时候进行自启动 问题解决 解决问题排查中最大的麻烦,需要进行reboot重启 查看rc-local的运行状态 systemctl status r…

clickhouse简介与实战

文章目录 1:简介1.1:CH是什么?1.2:CH优缺点1.2.1:优势1.2.2:缺点 1.3:架构设计 2:CH接口3:CH引擎1:数据库引擎3.1.1:mysql引擎 2:表引擎3.2.1&…