Flutter架构——线程模型

news/2024/10/21 23:20:02/

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.ppmy.cn/news/189313.html

相关文章

教务系统--DAL层实现

教务系统数据库设计完毕之后,就开始正式编写代码了.按照软件工程学的观点.一个软件的编码阶段占整个开发过程的很小一部分.大部分时间都是在做需求设计.但是我们做的这个教务系统感觉没有严格按照这个来执行. 主要原因我理解有这几个: 1:我们对需求都有一定的了解,而且六期做过…

数据访问层DAL实现过程

这里为了演示上简单,假设:后台数据库(暂为SqlServer只有用户表User与部门表Department),各表字段相应精简: User(用户表)Id主键Name姓名DeptId部门编号其余字段省略...... Department(部门表)Id主键Name名称Desc部门描述其余字段省略...... 后…

Java通用数据访问层Fastser-DAL推荐

本着不重复造轮子的原则,基于mybatis、spring jdbc、hibernate等ORM的通用数据访问层,支持基于datasource的读写分离、主备自动切换和故障转移,支持简单的负载均衡。 源码地址:http://git.oschina.net/fastser/fastser-dal-all 特…

lxm28au07m3x服务器不显示,Schneider LXM26DU07M3X 施耐德伺服控制器

Schneider LXM26DU07M3X 施耐德伺服控制器 法国施耐德(Schneider-Electric)主要电器产品: 1) 施耐德传感器系列: 接近传感器、光电传感器、限位开关、超声波传感器、压力传感器、旋转编码器、RFID无线射频识别系统 2) 施耐德控制和接口系…

python3爬取图片

对http://code.py40.com/42.html的爬虫代码进行改造,添加多线程,多进程下载,图片完整性判断,爬取百度图片分析 import multiprocessing import re import os import requests import timefrom multiprocessing import Process, Q…

2021-08-30

三层架构 三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层 (BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问&#x…

【转】C#中三层架构UI、BLL、DAL、Model详解

三层架构分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)再加上实体类库(Model) 转载请注明出自朱朱家园https://blog.csdn.net/zhgl7688 1、实体类库(…

C#中三层架构UI、BLL、DAL、Model实际操作

三层架构分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)再加上实体类库(Model) 转载请注明出自朱朱家园https://blog.csdn.net/zhgl7688 1、实体类库(…