Flutter的入门简介

Android混合开发的几个过度

第一个阶段:原生开发

  1. 开发成本大:原生开发一般都要维护Android、iOS两个开发团队,版本迭代时,人力成本,开发成本,测试成本都会变大。
  2. 动态化需求:当需求发生变化时,纯原生应用大多数需要通过版本升级来更新内容,不发版也可以更新应用内容的需求就变的迫在眉睫。

第二个阶段:H5交互

  1. WebView担任JavaScript与原生API之间通信的Bridge桥梁。(原生)
    1. Java 调用 js 里面的函数,大概一次一百多毫秒左右,如果要做交互性很强的事情,会造成很大的问题。
    2. WebView存在严重漏洞。利用该漏洞,攻击者可以通过存在风险的addJavascriptInterface接口函数提供的扩展穿透webkit执行本地Java代码,造成恶意代码在受害人的手机上执行,并可能进一步执行木马。
    3. WebView性能堪忧,存在较大的内存泄漏
  2. 用于在JavaScript与原生之间通信的工具称之为WebView JavaScript Bridge(JsBridge等)。(现在)
    1. JSBridge:是JS和Native之前的一种通信方式。简单的说,JSBridge就是定义Native和JS的通信,Native只通过一个固定的桥对象调用JS,JS也只通过固定的桥对象调用Native。JSBridge另一个叫法及大家熟知的Hybrid app技术。JavaScript通过 bridge 传递到native完成原生绘制, bridge 的成本高,因为需要频繁的跨桥调用,导致卡顿等性能问题。

 

 

        2.React Native:将渲染交给原生,而不是直接在HTML中完成。这种修改确实让开发出来的App突破了WebView的性能问题,并且在如今依然有很多企业选择使用RN来进行跨平台App的开发。RN学习与维护成本高,并且性能仍然存在瓶颈(JS通过桥通知原生渲染)

         

Flutter语言的特点:

  1. 跨平台的开发
  2. 与现有代码一起开发
  3. 完全开源,免费
  4. 热重载:页面每次改动,不需要手动去刷新,可自动刷新。即支持开发过程中热重载。
  5. 统一的UI:Flutter 提供丰富的内置 UI 组件—— Material Design(针对 Android )和 Cupertino(适用于 iOS ),不需要担心在众多设备上看起来会有什么不同。

开发的特点:

  1. 基于JIT的快速开发周期
  2. Flutter在开发阶段采用JIT模式,这样就避免了每次改动都要进行编译,极大的节省了开发时间;
  3. 基于AOT的发布包
  4. Flutter在发布时可以通过AOT生成高效的ARM代码以保证应用性能。
  5. 为了快速流畅的用户体验需要能够在每个动画帧运行大量的代码,不能有周期性的停顿,否则会造成掉帧。
  6. 单线程:不需要锁,不存在数据竞争和变量状态同步,也没有线程上下文切换的性能损耗和锁导致的卡顿。

垃圾回收

多生代无锁垃圾回收器,专门为UI框架中常见的大量Widgets对象创建和销毁优化。

​ Dart VM借鉴了大部分JVM的思路,垃圾回收采用了多生代算法,将内存管理分为新生代和老年代。

- **新生代**: 通常初次分配的对象都位于新生代中,该区域主要是存放内存较小并且生命周期较短的对象,比如局部变量。新生代会频繁执行内存回收(GC),回收采用**“复制-清除”**算法,将内存分为两块(图中的from 和 to),运行时每次只使用其中的一块(图中的from),另一块备用(图中的to)。触发垃圾回收时Dart会将当前半空间中的“活跃”对象拷贝到备用空间,然后整体释放当前空间的所有内存,最后,交换两块内存的角色。整个过程中Dart只需要操作少量的“活跃”对象,大量的没有引用的“死亡”对象则被忽略,这种算法也非常适合Flutter框架中大量Widget重建的场景。 

- **老年代**: 在新生代的GC中“幸存”下来的对象,它们会被转移到老年代中。老年代存放生命力周期较长,内存较大的对象。老年代通常比新生代要大很多。老年代的GC回收采用**“标记-清除”**算法,分成标记和清除两个阶段,在标记阶段,所有线程参与并发的完成对回收对象的标记,降低标记阶段耗时。在清理阶段,由GC线程负责清理回收对象,和应用线程同时执行,不影响应用运行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值