这个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

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

  1. 十个Flex/Air疑难杂症及解决方案简略

    十个Flex/Air疑难杂症及解决方案简略 转自http://blog.sban.us/40.html 最近去一家台企,对方给我出了十道“难道”:在TileList中如果選擇檔過多,會出現捲軸,當拖動 ...

  2. RIAidea – Focus on Flash/Flex/AIR » About Me

    RIAidea – Focus on Flash/Flex/AIR » About Me Browse > Home > About Me Tuesday, May 20, 2014 | ...

  3. 开源Flex Air版免费激情美女视频聊天室,免费网络远程视频会议系统((Flex,Fms3联合打造))

    开源Flex Air版免费激情美女视频聊天室,免费网络远程视频会议系统((Flex,Fms3联合打造))   Flex,Fms3系列文章导航 Flex,Fms3相关文章索引 本篇是视频聊天,会议开发实 ...

  4. 【Abode Air程序开发】Flex air文件打包和运行

    1 安装Adobe AIR 运行时,和java的JVM类似. Adobe AIR 运行时允许在桌面运行AIR应用程序,脱离游览器的束缚. 下载安装文件http://get.adobe.com/cn/a ...

  5. 读取Flex AIR应用程序设置

    说明: 本人之前做过一年的Flex AIR移动跨平台开发,在之前学习过程中,一直是将笔记记在了Evernote上,有的笔记是自己写的,也有的笔记是在网上看到,顺手记下了的. 所以在这里声明下,如果在网 ...

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

    做Flex Mobile开发的人应该知道,Flex为手机应用并没有提供弹出框组件,需要自定义. 通过查找文档.资料,我做出一个效果还算不错的弹出框组件,可以适用于手机设备上,不多讲,直接贴源码,相信对 ...

  7. Flash, Flex, Air, Flashplayer之间的相互关系是什么?

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:曾嵘链接:http://www.zhihu.com/question/20001256/answer/15565376来源:知 ...

  8. air mobile andriod ios 页面加载控件

    通过最近的研究flex 书写android .ios申请书,我们遇到了一个问题加载页面,我们用flex sdk 12,air 15 无级似android ListView寻呼模块.所以,我和我的同事们 ...

  9. Flex AIR组件

    1.FileSystemComboBox .directory = File.appli / desk/doc    /  directoryChange 2.FileSystemTree可返回 好用 ...

随机推荐

  1. golang中包的初始化

    1.当一个go源程序被初始化时,首先去初始化所依赖的其他包,然后初始化该go源码文件的全局变量的初始化和执行初始化函数,其中该包所有的全局变量初始化在前,该包的初始化函数int在后.当所有包的初始化函 ...

  2. 浅谈Android开机启动速度优化(含应用程序启动速度优化)

    众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题. 在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本 ...

  3. Mac上定时运行脚本工具--launchctl

    在Mac上可以像在Linux上一样,使用crontab来定时运行脚本,但苹果并不推荐这个方法.苹果推荐使用Launchctl来完成定时任务. 首先,我们先写一个可执行的脚本,列子为php脚本,名字为t ...

  4. 【转载】ubuntu下编写字符设备驱动程序-入门篇

    在ubuntu初学驱动,觉得挺有用的. http://www.eefocus.com/jefby1990/blog/13-02/291628_c39b8.html

  5. markdown-it + highlight.js简易实现

    markdown-it 官方demo markdown-it 文档 1.配置highlightjs,针对markdown中各种语言高亮,针对对应的标签 pre code 里面的样式 -- index. ...

  6. 洛谷P3286 [SCOI2014]方伯伯的商场之旅

    题目:洛谷P3286 [SCOI2014]方伯伯的商场之旅 思路 数位DP dalao说这是数位dp水题,果然是我太菜了... 自己是不可能想出来的.这道题在讲课时作为例题,大概听懂了思路,简单复述一 ...

  7. 2018-11-3-WPF-内部的5个窗口之-MediaContextNotificationWindow

    title author date CreateTime categories WPF 内部的5个窗口之 MediaContextNotificationWindow lindexi 2018-11- ...

  8. UVA_694:The Collatz Sequence

    Language: C++ 4.8.2 #include<stdio.h> int main(void) { long long int m, n, copy_m; ; ; ) { sca ...

  9. LeetCode97 Interleaving String

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. (Hard) For example,Giv ...

  10. Linux 中 grep 命令的 12 个实践例子

    2017-10-17 Linux小管家 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件 ...