安卓技术博客1

安卓技术博客1-安卓新技术介绍

  1. 本文新技术
    1.1 MVP
    1.2 阿里Android动态界面开发框架Tangram
    1.3 Flutter
  2. 技术的简介
    2.1 MVP
    2.1.1 MVP结构
    M-Model-模型、V-View-视图、P-Presenter-表示器。从MVC和MVP两者结合来看,Controlller/Presenter在MVC/MVP中都起着逻辑控制处理的角色,起着控制各业务流程的作用。而 MVP与MVC最不同的一点是M与V是不直接关联的也是就Model与View不存在直接关系,这两者之间间隔着的是Presenter层,其负责调控 View与Model之间的间接交互,MVP的结构图如下所示,对于这个图理解即可而不必限于其中的条条框框,毕竟在不同的场景下多少会有些出入的。在 Android中很重要的一点就是对UI的操作基本上需要异步进行也就是在MainThread中才能操作UI,所以对View与Model的切断分离是 合理的。此外Presenter与View、Model的交互使用接口定义交互操作可以进一步达到松耦合也可以通过接口更加方便地进行单元测试。

图1 结构图
2.1.2 使用MVP的理由
开源项目都存在一个问题,就是一个activity文件中一两千行,甚至三四千行代码。当然,我想这个在android项目中并不是一个奇怪的现象,当你的项目足够复杂,没有什么是不可能。在基于传统android架构的mvc模式中。model层很多时候只是一个bean类。而view层只是一个xml文件,controller层也就是activity层几乎承担了诸如网络请求,数据库,更新UI等所有的工作,全在activity里完成。这也就导致了activity文件十分庞大臃肿。但是,问题接踵而至。多人维护这样的一个项目是很痛苦的,一个几千行的activity,假如某个人改动了其中的一行,可能会导致其他修改他的人非常痛苦,因为牵扯太多的逻辑了。所以,人们开始尝试把几千行的代码,分成很多模块。网络请求放在一个模块,UI更新放在一个模块,其他的东西放另一个模块。之后就有了MVP。
2.2 Tangram
2.2.1 Tangram架构
Tangram 是阿里出品的用于快速实现组合布局的框架模型,在手机天猫 Android 及 iOS版广泛使用。Tangram提供了流式布局、滚动布局,瀑布流布局,固定布局等数种布局样式,布局提供样式参数供调整,布局内部也可填充任意的视图(View),使Native开发的页面具备一定的动态性,并提供极致的性能。

图2 Tangram架构图
2.2.2 Tangram的特点
Tangram关注三个重点:面向业务、多端一致性和高性能。Tangram旨在提供运营层面的灵活性和native的极致性能,技术上的切入点放在了目前native开发的界面灵活性的难点和动态方案目前内存和滑动控制的性能瓶颈这块;同时构建了一整套可运营的页面结构化描述,UED/运营/技术能够在这一套结构描述上达成一致,运营的配置应该是能够脱离开发的,而不是强依赖开发,开发的时间可以投入到通用型的支持和产品扩展上。
(1)Android iOS 双平台支持,iOS 版本参考开源库 Tangram-iOS。
(2)通过 json 创建页面视图,并提供了默认的解析器。
(3)可轻松实现页面视图的回收与复用。
(4)框架提供多种默认的布局方式。
(5)通过 json 数据或代码支持自定义布局样式。
(6)高性能,基于vlayout。
(7)支持扩展功能模块
2.2.3 Tangram的应用app

图3 应用Tangram的app。
2.3 Flutter
2.3.1 Flutter的简介
Google自2017年第一次提出Flutter, 到2018年Beta, 再加之RN的各种风波与问题, 使得Flutter的热度不断上升, 国内不少公司都公布Flutter在其产品中的应用, 如美团, 闲鱼等。 Flutter是Google使用Dart语言开发的移动应用开发框架,使用一套Dart代码就能快速构建高性能、高保真的iOS和Android应用程序,并且在排版、图标、滚动、点击等方面实现零差异。
2.3.2 Flutter架构
Flutter的架构主要分成三层:Framework,Engine和Embedder。Framework:
使用dart实现,包括Material Design风格的Widget,Cupertino(针对iOS)风格的Widgets,文本/图片/按钮等基础Widgets,渲染,动画,手势等。Engine:Engine使用C++实现,主要包括:Skia,Dart和Text。Embedder:Embedder是一个嵌入层,即把Flutter嵌入到各个平台上去,这里做的主要工作包括渲染Surface设置,线程设置,以及插件等。从这里可以看出,Flutter的平台相关层很低,平台(android,iOS)只是提供一个画布,剩余的所有渲染相关的逻辑都在Flutter内部,这就使得它具有了很好的跨端一致性。

图4 架构图
2.3.3 Flutter的特点
(1)支持AOT的Dart语言,AOT方式编译成机器码(ARM),执行效率也比JavaScript高。
(2)一套代码运行在多个平台,做到真正的跨平台。
(3)IT & AOT运行模式,支持开发时的快速迭代和正式发布后最大程度发挥硬件性能。Flutter所使用的Dart语言同时支持AOT和JIT运行方式,JIT模式下还有一个备受欢迎的开发利器“热刷新”(Hot Reload),即在Android Studio中编辑Dart代码后,只需要点击保存或者“Hot Reload”按钮,就可以立即更新到正在运行的设备上,不需要重新编译App,甚至不需要重启App,立即就可以看到更新后的样式。
(4)Flutter本身支持Android和iOS两个平台,提供了两套设计语言的控件实现Material & Cupertino,可以帮助App更好地在不同平台上提供原生的用户体验,还包含了许多核心的widget,如滚动、导航、图标和字体等,这些都可以在iOS和Android上达到原生应用一样的性能
(5)兼容性上,Flutter 提供的 widget 都是基于 skia来实现和精心定制的,与具体平台没关,所以能保持很高的跨 os 跨 os version 的兼容性。
(6)Flutter可以复用现有的Java、Swift或ObjC代码,访问iOS和Android上的原生系统功能和系统SDK
(7)通过使用Isolates,可以充分利用多核性能。
(8)相较于其他跨平台应用,art语言原生的支持面向对象,函数式编程,响应式编程,泛型,并发。
3. 个人看法
Android技术更新换代很快,新技术层数不穷,但是一切的一切,都是要把基础知识打牢固,这些新技术都是在原来的基础上进行修改于更新,真正掌握了安卓开发的知识,上手这些都是很快的,自己也需要多了解新技术,不断提高自己的技术。

个人博客链接:

参考文献:
【1】 Flutter中文网
【2】 Tangram.pinggunohe.net
【3】 Android的MVP模式 作者:小生无礼
【4】 https://www.cnblogs.com/ijaye/p/8588481.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值