Flex AIR Mobile应用性能解决方案

这个flex  mobile开发,一般原生开发也许是最合适的方式,但是涉及到跨平台的问题,有精力的团队一般都会逐个基于移动操作系统进行开发。但是如果追求短小,精悍,快速,希望能够跨平台,基于html5或者Flex开发是一个不错的选择。

Flex是个双刃剑,用的好的,做出来的效果不比原生差,做的不好的,效果、性能则不敢恭维,关于如何使用Flex开发出性能较高的应用,通过验证后得以收纳如下:

 

1、组件尽量使用为移动开发优化的(Spark组件),皮肤尽量使用简洁的,一般最好通过graphic以及fxg语法来绘制,不要过多嵌入位图。

 

2、itemRenderer最好用As3的,mobile theme里面有LabelItemRenderer以及IconItemRenderer,里面需要重载的方法有createChildren,measure,drawBackground,layoutContent以及数据的setter。相比Flex ItemRenderer,mobile的ItemRenderer的updateDisplayList分割成drawBackground和LayoutContent。IconItemRenderer使用flex ContentCache高速缓存下载下来的图形图像。

 

3、用styleableTextField,该类只可以在As3中使用,不能在mxml中使用,性能在mobile中比Label和RichText性能高不少。

 

4、让flex ItemRender保持矩形形状并且设置OpaqueBackground为一个单一颜色。

 

5、如果在flex ItemRenderer中绘制自己的背景,则需要将autoDrawBackground为false。

 

6、flex ItemRenderer如果外观保持静态,可以设置cacheAsBitmap为true。

 

7、flex ItemRenderer尽量少使用双向绑定。

 

8、布局定位组件,尽量使用容器组件的layout属性来达到布局目的,尽量少地嵌入容器组件,减少容器组件层次等。

 

9、优先考虑ConstraintLayout布局方式,减少动态布局。

 

10、使用Group和Graphics fxg来代替BorderContainer。(SkinnableContainer)

 

11、flex mobile中不要使用CreationComplete来初始化view的外观,直接覆盖data的setter方法,尽量避免使用双向绑定以及绑定表达式。

 

12、建议在View的ViewActivate中调用远程异步服务以及处理子组件的初始化等工作,避免用户体验中的”停顿“。

 

13、用IncludeIn或ExcludeFrom以state的方式隐藏或显示组件。

 

14、如果一个View来回被用户所切入,那么最好指定该View的destructionPolicy为never,即在内存中一直保留该view的实例。

 

15、使用BitmapImage代替Image进行图像嵌入工作。

 

16、使用RectangularDropShadow代替DropShadowFilter

 

17、使用图像的多个尺寸备份,而不是使用大图+缩放或者图形圆滑技术来适应不同分辨率和dpi。(解决分辨率的根本方法)

 

18、尽量使用png图形,而不是采用jpg或者gif.

 

19、对于简单图形,可以采用graphics或者rect fill等,对于复杂一点的图形建议采用Adobe Illustrator来绘制fxg矢量图形。

 

20、尽量使用css,利用mobile theme已有的皮肤,因为这些皮肤已经高度优化。

 

21、如果mobile theme的css样式不足,则需要用as3来编写皮肤或者扩展已有组件的皮肤。

 

 

参考链接:

http://blog.sina.com.cn/s/blog_81d20bdd01018hf6.html

 

http://www.adobe.com/cn/devnet/flex/articles/flex-mobile-performance-checklist.html

时间: 2024-10-30 16:16:18

Flex AIR Mobile应用性能解决方案的相关文章

读取Flex AIR应用程序设置

说明: 本人之前做过一年的Flex AIR移动跨平台开发,在之前学习过程中,一直是将笔记记在了Evernote上,有的笔记是自己写的,也有的笔记是在网上看到,顺手记下了的. 所以在这里声明下,如果在网上看到类似的或者是一模一样的文章,请见谅. 因为找不到原文作者,所以,不在我的博客里说明是转载自哪里了,望原文作者见谅. 在运行时,您可以获取应用程序描述符文件的属性及应用程序的发行商 ID.它们是在 NativeApplication 对象的 applicationDescriptor 和 pub

Flex/AIR开发环境之Intellij IDEA篇

以下内容转自http://coffeelover.iteye.com/blog/737280 并由本人做了一些修改....     搭建过程如下:   1. 安装 Intellij IDEA11: 1) 下载地址: http://www.jetbrains.com/idea/download/index.html 2) 将下载下来的Intellij IDEA11 3)  运行 Intellij IDEA   2. 配置 Flex SDK.AIR SDK: 1) 点击菜单 File -> Proj

测试映泰最新Hi-Fi H77S的SRT性能解决方案

据业内消息灵通人士分析,到2012年底,SSD将还有一次跳水的过程,组建自己的SRT混合硬盘还是双SSD RAID的时日已经不远了! 即便是现在,符合SRT要求的SSD产品价位已经在我们的接受范围了,国产很多新品的价位已经跌进了200元大关,Intel SRT SSD缓存技术就在此时吧!SRT就是使用SSD与机械盘组建一个混合RAID模式,使用SSD作为系统分区的高速缓存,该技术将大大提升WIN7/8的系统http://www.aliyun.com/zixun/aggregation/18052

Flex AIR自定义Mobile的弹出框组件

做Flex Mobile开发的人应该知道,Flex为手机应用并没有提供弹出框组件,需要自定义. 通过查找文档.资料,我做出一个效果还算不错的弹出框组件,可以适用于手机设备上,不多讲,直接贴源码,相信对Flex了解的人都可以一看就懂. 首先,需要MXML定义弹出框组件: <s:SkinnablePopUpContainer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/fl

Flex/AIR控件字体样式设置

今天在写个air的程序,写完后老婆说我字体太小.太难看了,于是我就开始整理程序的 界面样式,想着这么简单的工作很快就会完成吧,可是事与愿违,竟然花费了好几个小时的 时间才把控件的字体设置完成.最后发现我竟然死在了font-weight上! 要实现的最终效果: 之前一直是: 在网上找了好多资料,试过好多方法一直没有找到解决办法,最后干脆就试一遍,发现必 须设置font-weight,字体才能生效. 下面就把flex设置字体的方法大体列举几种,以供参考. 1.引用外部字体库的方法: @font-fa

Flex应用程序的性能优化

众所周知,flex应用程序存或多或少地存在性能方面的问题.特别是企业级大数量的应用程序,通常的解决办法是分模块加载,分时加载数据等措施来解决.下面我们来谈一谈代码级别的优化: 1.尽可能减少程序的不必要运算.如下两种表达式: var a:unit = b+(1024-200)/2;    var a:unit = b+412;  很明显下面的那个表达式运算更快. 2.尽可能地采用乘法运算来代替除法运算.如下两个表达式: result = num / 4;    reuslt = num * 0.

卸载Adobe AIR时出错的解决方案

Air是Adobe公司出品的跨操作系统的运行时库,通过它开发者可利用现有的Web开发技术(Flash,Flex,HTML,Javas cript,Ajax)来构建富Internet应用程序并部署为桌面应用程序.很久前我装了Adobe AIR,因为Flash应用程序是用这个带起来的,相当于一个支持库一样的东西. 看到有新版3.5了,于是打算更新下,但是非常苦逼,更新安装还有卸载的时候都提示: "卸载 Adobe AIR 时出错.管理员可能不允许卸载此软件.请与管理员联系." 很郁闷的说,

Flex AIR应用换肤功能(Android和IOS)

说明 换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载swf文件的过程,而这些swf文件则有css文件编译而来. 关于换肤功能,在android和ios系统的实现方式是不同的.主要原因,是因为ios不支持本地加载(ipa中包含)多个swf文件.   换肤基础 1) 原理 :就是将各种不同的css文件先编译成swf,然后用StyleManager类的loadStyleDeclarations方法加载换肤的swf. 2) 基础: 定义css文件,如下: /* CSS file */ @na

Flex 编程注意之性能优化、垃圾回收的一些总结_Flex

以下的内容是某个QQ群中得到的,我经过了一些整理和补充,希望对大家有所帮助. 注意:以下内容不是我原创的,请勿擅自转载,本文只是用作记录和总结.:) 垃圾回收的一些知识总结: 1.被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉. 2.父对象内部的子对象被外部其他对象引用了,会导致此子对象不会被删除,子对象不会被删除又会导致了父对象不会被删除. 3.如果一个对象中引用了外部对象,当自己被删除或者不需要使用此引用对象时,一定要记得把此对象的引用设置为null. 4.本对象删除