什么可能会减慢我的flex移动应用程序?

时间:2012-02-04 09:54:27

标签: performance flex mobile

我在一些桌面应用程序上使用flex工作了近两年。到目前为止,我从未遇到任何与性能相关的问题,但今天我们完成了iPad的移动应用程序,我面临挑战,iPad上的应用程序速度非常慢。

http://i.stack.imgur.com/qkbWn.png

慢,意味着当我按下菜单中的按钮来更改分割视图时,我必须等待5s。然后滚动速度非常慢,只有不到一个fps而我的TextInput开始出错(文本不再出现在他的框中)。

我开始阅读很多关于移动平台优化的博客文章和演示文稿,然后我重写了一些我使用的组件。我删除了SkinnableContainer,并将其替换为VGroup,包括一些基于ActionScript的绘图。

现在你看到的是一个VGroup(深灰色的)包含其他一些VGroup(这里有标题的组),然后每个小部件都是一个带有标签和Widget的HGroup。我只对文本使用Label和TextInput。

另一个页面上的创建时间很慢(创建视图几秒钟),其中只有4个文本小部件,或者另一个只有一个带有自定义项目渲染器的列表,其中每行是一组4个标签

整个事情都与RobotLegs联系在一起,没有什么花哨的东西,在视图中注入了一个模型,在开始时我在视图上设置了一个成员变量,用这个对象来绑定我的变量。

坦率地说,我现在的想法是:它闻起来很腥,因为如果我做的一切都做得不好,就不可能有如此低的性能,并认为flex在移动平台上具有竞争力。所以现在我正试图逐个禁用应用程序,试图找到可能会减慢它的速度。我有几个嫌疑人需要检查,例如我有一些绑定警告要检查,然后看看机器人是否已经解决了这个问题。

所以我的主要问题是你的想法,你能否对“有问题”和“我们如何解决它”提出一些看法。

由于

1 个答案:

答案 0 :(得分:0)

  1. 为启动而运行探查器,并为每个需要的操作单独执行。然后优先处理问题并尝试使用基本优化技术解决问题。
  2. 您无法快速解决的一些问题 - 例如创建大型组件的时间。唯一的选择是使用AS3重写那些没有MXML,样式和任何东西的组件。我确信flash.text.TextField的创建速度比mx.controls.Label快许多倍。其他组件也是如此。
  3. 创建组件时,可以以非常低的价格重复使用它。在您的应用中,您可以重新创建许多地方,同时可以重复使用旧组件。它会节省你的记忆和时间。
  4. 即使不需要,布局也会重绘。如果您有很多嵌套布局,请找到最关键的位置,并用一个自定义布局甚至组件替换一系列布局。
  5. 这一切都非常耗费开发人员的时间。最后,无论如何你都不会得到一个流畅的应用程序,但我相信它可以变得可用。