【问题标题】:What could possibily slow down my flex mobile application?什么可能会减慢我的 flex 移动应用程序的速度?
【发布时间】:2012-02-26 17:44:45
【问题描述】:

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

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

慢,意味着当我按下菜单中的按钮来更改拆分视图时,我必须等待 5 秒。然后滚动真的很慢两个,不到 1 fps,我的 TextInput 开始出错(文本不再在他的框中)。

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

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

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

所有的东西都是用 RobotLegs 连接的,没什么花哨的,一个模型被注入到视图中,一开始我在视图上设置了一个成员变量,这个对象来绑定我的变量。

坦率地说,我现在的想法是:它闻起来很可疑,因为如果我把所有事情都做对了,就不可能有这么低的性能,并且认为 flex 在移动平台上具有竞争力。所以现在我正在尝试逐个禁用应用程序,以尝试找到可能会减慢它的原因。我有几个嫌疑人要检查,例如,我有一些约束性警告要检查,然后看看 robotlegs 是否也遇到了问题。

所以我在这里的主要问题是您的想法,您能否对“是否存在问题”和“我们如何解决它”有一些想法。

谢谢

【问题讨论】:

  • 不幸的是,这个问题太模糊了,无法回答。我认为您需要进行正式的代码审查才能获得任何有用的信息。众所周知,Flex [和 Flash] 在移动设备上性能不佳。我想我听说 Robotlegs 在 Mobile 上引入了其他问题。每次视图更改时都会重新创建视图,并且 Robotlegs 会重新做所有的初始化工作。这可能很耗时;但我会从一个真正简单的东西开始(比如单个视图/按钮),然后慢慢添加东西,看看是什么导致了速度变慢。
  • 这是我今天下午的计划。我知道我的问题有点含糊,但以防万一有人有想法。感谢您对我的了解。
  • 我的 Flash 手机游戏存在性能问题,我通过简化图形解决了这些问题。但从屏幕截图中看,您似乎没有任何复杂的图形。

标签: performance apache-flex mobile


【解决方案1】:
  1. 为启动运行探查器,并为每个需要长时间运行的操作单独运行。然后确定问题的优先级,并尝试使用基本的优化技术来解决它们。
  2. 有些问题您将无法快速解决 - 例如。是时候创建大组件了。唯一的选择是使用 AS3 重写这些组件,而不使用 MXML、样式和任何东西。我确信flash.text.TextField 的创建速度比mx.controls.Label 快很多倍。其他组件也是如此。
  3. 创建组件后,可以以极低的价格重复使用。在您的应用程序中,必须有很多地方可以重新创建,同时可以重用旧组件。它将节省您的内存和时间。
  4. 即使不需要,布局也会重绘。如果您有大量嵌套布局,请找到最关键的位置,并将一系列布局替换为一个自定义布局甚至组件。

这一切都非常耗时。最终你不会得到一个流畅的应用程序,但我相信它可以变得可用。

【讨论】:

  • 我解决了这个问题,基本上是我所做的:1) 我改用 actionscript 代码重写了我的容器。 2)在一些装饰器上添加了一些“cacheAsBitmap true”。 3) 为几个组件选择了固定布局,似乎所有这些 HGroup / VGroup 在显示新视图时都扼杀了我的用户体验。 4) ...发现如果您使用滚动条,则不应在其中放入本机文本输入。就是这样,问题解决了,客户满意,我在两周内完成了 200 小时的代码。是时候打丝绸了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 2019-05-29
  • 2018-03-11
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多