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

问题描述:

我在过去两年在某些桌面应用上使用flex。到目前为止,我从未遇到任何与性能相关的问题,但今天,当我们完成iPad的移动应用程序时,我面临着一个挑战,iPad的应用程序非常慢。什么可能会减慢我的Flex移动应用程序?

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

慢,意味着当我在菜单中按一个按钮来改变SPLITVIEW我必须等待像5秒。然后滚动速度真的很慢,只有不到一个fps,我的TextInput开始出错(文本不在他的盒子里)。

我开始阅读大量的博客文章和介绍有关优化移动平台,然后我重写了一些我用的组件。例如,我删除了SkinnableContainer,并将其替换为包含一些基于actionScript的绘图的VGroup。

现在你看到的是一个包含了一些其他VGroup(标题为这里的组)和VGroup(暗灰色的),那么每个插件是一个标签和一个Widget的HGroup。我只使用Label和TextInput作为文本。

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

整个事情是有线与Robotlegs的,有没有什么特别的,一个车型在视图中注入一开始我设置一个成员变量的观点与此对象绑定我的变量。

坦率地说,现在我的想法是:它的气味腥,因为如果我所做的一切权利就不可能有如此低的表现,认为flex是在移动平台上的竞争力。所以现在我试图逐个禁用应用程序来尝试找到可能会减慢速度的东西。我有几个嫌疑人要检查,比如我有一些有约束力的警告来检查,然后看看robotlegs是否已经解决了问题。

所以我在这里主要的问题是你怎么想,你可以有关于一些想法“是有问题”和“如何解决它”。

感谢

+1

不幸的是,这个问题太模糊,无法回答。我认为你需要一个正式的代码审查来获得有用的东西。已知Flex [和Flash]在移动设备上不是很好。我想我听说Robotlegs在移动设备上引入了其他问题。它需要做的事情是在每次视图更改时重新创建视图,并且Robotlegs重新执行所有初始化内容。这可能很耗时间;但我会从一个真正简单的东西开始(比如单个视图/按钮),然后慢慢添加东西以查看导致减速的原因。 – JeffryHouser 2012-02-04 14:02:32

+0

这是我今天下午计划的。我知道我的问题有点含糊,但以防万一有人有想法。感谢您的支持。 – Whirly 2012-02-04 15:30:07

+0

我的Flash手机游戏有性能问题,我通过简化图形来解决。但它看起来不像你有任何截图中的复杂图形。 – JeffryHouser 2012-02-04 16:18:30

  1. 运行探查启动和separatelly对于需要渴望,它需要每一个操作。然后优先考虑问题并尝试用基本的优化技术来解决问题。
  2. 您无法快速解决的一些问题 - 例如创建大型组件的时间。唯一的选择是使用AS3重写那些组件,而不使用MXML,样式和任何东西。我确信flash.text.TextField的创建速度比mx.controls.Label快很多倍。其他组件也一样。
  3. 组件创建时,它可以以非常低的价格重新使用。在您的应用程序中,您可以重新使用旧组件的同时,必须有许多地方可以重新创建。它会节省你的记忆和时间。
  4. 即使不需要,布局也会重新绘制。如果您有很多嵌套布局,请查找最关键的位置,并用一个自定义布局或组件来替换一系列布局。

这一切都十分开发商耗时。最后你不会得到一个流畅的应用程序,但我相信它可以变得可用。

+0

我解决了这个问题,基本上我做了什么: 1)我改写了使用actionscript代码的容器。 2)在一些装饰器上添加了一些“cacheAsBitmap true”。 3)为几个组件进行固定布局,似乎所有这些HGroup/VGroup在显示新视图时都会破坏我的用户体验。 4)......发现如果你使用滚动条,你不应该在其中放置原生的文本输入。 就是这样,问题解决了,客户满意,并且在两周内为我提供了200小时的代码。时间打丝绸。 – Whirly 2012-02-06 21:46:38