Android:手把手带你入门跨平台UI开发框架Flutter,海量算法高频面试题精编解析
作者:互联网
- 开发语言:Dart语言(高开发效率、高性能等)
2. 特点
Flutter的主要特点包括:使用自身的高性能渲染引擎进行渲染 & Dart编程语言语言
具体介绍如下:
2.1 高性能渲染引擎
-
Flutter进行UI绘制时,使用的是自带的高性能渲染引擎进行绘制渲染(不使用WebView & 原生控件)
-
好处:保证在Android和iOS上UI的一致性 & 避免对原生控件依赖而带来的限制和维护成本。
-
组成:C、C ++、Dart、Skia(2D渲染引擎),具体描述如下:
特别注意:
-
Flutter依靠Flutter Engine虚拟机在iOS和Android上运行
-
Flutter Engine使用C/C++编写 = 低延迟输入 + 高帧速率
-
开发人员可通过Flutter框架和API在内部进行交互
下面,简单介绍一下Flutter的2D渲染引擎:Skia
2.2 Dart语言
介绍Dart语言前先介绍两个概念:JIT和AOT。程序主要有两种运行方式:静态编译 & 动态编译,具体如下:
特别注意:
-
JIT 和 AOT指的是程序运行方式,和编程语言并非强关联的。
-
有些语言可以以JIT方式 & AOT方式一起运行,如Java,它可在第一次执行时编译成中间字节码、然后在之后执行时可以直接执行字节码
-
通常区分是否为AOT的标准就是看代码在执行之前是否需要编译,只要需要编译,无论其编译产物是字节码还是机器码,都属于AOT
Dart语言的特点
Dart语言具备开发效率高、高性能 & 类型安全的特点
具体如下:
3. 原理解析
3.1 框架结构
Flutter框架主要分为两层:FrameWork层、Engine层,如下图所示:
说明:开发时,主要基于Framework层;运行时,则是运行在 Engine上。每层的具体介绍如下:
3.2 原理概述
开发时,主要基于Framework层;运行时,则是运行在 Engine上
Engine是Flutter的独立虚拟机,由它适配 & 提供跨平台支持;因为其存在,Flutter不使用移动端系统的原生控件, 而是使用自己 Engine 来绘制 Widget (Flutter的显示单元);Dart 代码是通过 AOT 编译为平台的原生代码,所以 Flutter可直接与平台通信,不需要JS引擎的桥接。
同时 Flutter 唯一要求系统提供的是 canvas,以实现UI的绘制。
编译时,具体如下:
3.3 关于widget
Flutter理念:“一切皆为Widget”,Widget是Flutter应用程序用户界面的基本构建块,具备以下特点:
-
属于具有一致性的统一对象模型,与其他将视图、控制器、布局和其他属性分离的框架不同。更新widget时更加高效
-
不可变的,仅支持一帧,且每一帧上不会直接更新,要更新而必须使用Widget的状态。无状态和有状态Widget 的核心特性相同,每一帧都会重新构建;
-
有一个State对象,用于跨帧存储状态数据 & 恢复
4. 特点
Flutter具备跨平台、开发效率高 & 高性能的特点
具体说明如下:
小福利:
在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021大厂最新Android面试真题解析
各个模块学习视频:如数据结构与算法
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!
或直接点击这里前往我的GitHub中下载,就可以白嫖啦,记得给文章点个赞哦。
github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)中下载**,就可以白嫖啦,记得给文章点个赞哦。
标签:Engine,面试题,渲染,精编,Dart,编译,跨平台,AOT,Flutter 来源: https://blog.csdn.net/m0_66264588/article/details/122769774