窥探Flutter的前世今身,多线程高并发

Flutter的目标在于做全平台!开发者只需使用同一套基准代码,便可为移动平台、桌面端和网页端开发应用。而目前来看Flutter所支持或将支持的平台已经有 Android、iOS、Fuchsia、Chrome OS,另外我认为未来支持鸿蒙OS(一款让我们引以为傲的操作系统)也必将是件水到渠成的事~

/   正文   /

=====================================================================

到底什么是UI框架?

我们把UI和框架拆开,分别来做解释。

UI是User Interface的缩写,是用户界面的意思,但在我们软件领域普遍的认识里,UI设计实际是指软件的人机交互、操作逻辑、界面美观性的整体设计,所以UI就是指软件的交互操作和视觉效果。

框架在百度百科上的释义如下(大家感受下):

框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。

而在我们软件领域,框架可以理解为是一个用来开发软件的工具包,它已处理好了通用的、基础性的工作,并且制定好了使用规则。

所以总结一下,UI框架就是指用来开发软件的工具包,且该软件可以带有交互操作和美观的视觉效果。

到底什么是高保真度?

(这词乍一看怪吓人的,让人头皮发麻,萌生吐意?,谁叫我不是厦大的呢?)

高保真是声音技术领域的专业术语,是指与原来的声音高度相似的重放声音。但在我们软件领域,高保真度其实就是高还原度的意思,旨在可以像素级还原UI稿的交互与视觉效果。

到底什么是高性能表现?

(以下说起性能的时候,都指的是在软件开发领域~)

性能是个司空见惯的词,但性能到底是什么意思呢?可能在我们心中是既知道又说不清楚的含糊状态。

性能的英文是Performance,它也有表现、工作情况的意思。

当说起性能的时候,我们都能联想起一些关键词,比如:启动速度、内存使用优化、布局优化、电量优化、包瘦身等等。

所以综上可以感受出来,性能是一个软件多维度指标表现情况的代名词,高性能表现就是指软件各项指标都表现优异。(该快的快、该少的少、该大的大?、该小的小)

Flutter是如何做到跨平台的?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXmUXX2o-1570523359132)(https://upload-images.jianshu.io/upload_images/15679108-dda4cf575ee65f28?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

这里搬出Flutter官方分层架构图,在大的层次上,从上到下依次分为如下三层(可以看出 Framework 层内部又会分层):

  • Framework框架层:一个纯Dart实现的SDK(一套基础库),负责 UI 相关的事情,如:动画、widget、绘图、手势、基础能力等。(我们的应用就是围绕这层来构建的) 在该层内部 Foundation 和 Animation、Painting、Gestures 对应的是 Flutter 中的dart:ui 包,它是 Flutter 引擎暴露的底层 UI 库,用来提供动画、手势及绘制等能力。

  • Engine引擎层:一个纯C++实现的SDK,主要包括 Skia 引擎(开源的二位图形库)、Dart 运行时、GC垃圾回收、编译模式支持、Text 文字排版引擎等。

  • Embedder嵌入器层:见名知意是将 Flutter 移植到各平台的中间层代码,做好这一层的适配 Flutter 基本可以嵌入到任何平台上去。它主要包括渲染Surface设置、原生平台插件、打包、线程管理、事件循环交互操作等。

所以可以看出在设计上Embedder层要做的工作就是隔离并适配不同平台的差异,保证对上层暴露统一的API,以此来达到跨平台的目的。无论现在的Android、iOS还是未来的Fuchsia、鸿蒙OS,亦或是其他嵌入式操作系统(比如树莓派上的系统 Raspbian ),理论上 Flutter 都是可以跨上去的?。

以上是针对跨操作系统而言的,在最近刚发步的 Flutter 1.9 中Flutter for web的支持虽然还处于预览版,但 flutter_web 这个 repo 已经合并到了 flutter 的主 repo,这也是一个重要的里程碑了。那么Flutter是如何做到支持Web的呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRAlu4DK-1570523359133)(https://upload-images.jianshu.io/upload_images/15679108-4d9a9edf16e3ba2d?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

如架构图所示,Framework 层在移动和 web 平台是共享的,当然为了支持 web ,官方对dart:ui库做了新的适配。然后便是使用基于 DOM、Canvas 和 CSS 的代码替换了移动平台上 Skia 实现的引擎层,当我们为 Web 平台编译 Flutter 代码时,应用、Flutter 框架、以及 Web 版本的 dart:ui 库都将编译为 JavaScript ,可以运行在任何现代浏览器上。

Flutter是如何做到高保真度的?

总结

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

以上就是总结的关于在面试的一些总结,希望对大家能有些帮助,除了这些面试中需要注意的问题,当然最重要的就是刷题了,这里放上我之前整理的一份超全的面试专题PDF,大家有兴趣的可以自行领取或者私信我:

还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

【Android核心高级技术PDF文档,BAT大厂面试真题解析】点击:Android架构视频+BAT面试专题PDF+学习笔记即可获取!查看免费领取方式!

这里只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢在关注一下~

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

215)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-NPmCzYDJ-1711024275216)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值