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 ItemRenderermobileItemRendererupdateDisplayList分割成drawBackgroundLayoutContentIconItemRenderer使用flex ContentCache高速缓存下载下来的图形图像。

 

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

 

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

 

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

 

6flex ItemRenderer如果外观保持静态,可以设置cacheAsBitmaptrue

 

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

 

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

 

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

 

10、使用GroupGraphics fxg来代替BorderContainer(SkinnableContainer)

 

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

 

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

 

13、用IncludeInExcludeFromstate的方式隐藏或显示组件。

 

14、如果一个View来回被用户所切入,那么最好指定该ViewdestructionPolicynever,即在内存中一直保留该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 themecss样式不足,则需要用as3来编写皮肤或者扩展已有组件的皮肤。

 

 

参考链接:

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

 

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

上一篇:Flex AIR应用拍照功能(Android和IOS版本)


下一篇:数组和内存控制