如何加速Flex Mobile并提高其性能

时间:2013-11-22 20:03:03

标签: android performance hardware-acceleration flex-mobile

我有一个非常简单的应用程序,它可以在PC上运行得很好,但在我的平板电脑(三星Galaxy Tab 3,SM-T210)上运行'可接受' - 不是很多。这是一个非常简单的应用程序,所以我认为它从第一天起就会运行得很好,但事实并非如此。我已经看到了一些非常资源丰富的应用程序 - 甚至无法与它们进行比较 - 在​​平板电脑上运行非常快速和顺畅。所以我一直在想如何实现这一目标。

我听说你可以使用Stage3D,Starling或Feathers加速你的flex应用程序。我认为对于大多数框架,我将不得不重写部分应用程序,因为我必须使用框架的组件来使应用程序运行得更快。我不知道我是否正确。这是对的吗?

有没有办法使用其中一个框架来加速我的Flex Mobile应用程序,而无需重写我的代码的大部分内容?如果是的话,你能告诉我怎么做吗?

提前感谢您的帮助。

此致

圣塞瓦斯蒂安

需要解决方案

罗德所说的每一个提示都非常重要。它将改善构造良好的应用程序的性能并使其顺利运行。这些提示的问题在于它们是冰山的较小“一半”而不是更大的“一半”。

我的应用程序从一个View转换到另一个View非常缓慢,这是因为我并没有“尊重”Flex的组件生命周期。我的意思是,在将组件添加到View的DisplayList并进行验证后,我正在执行组件配置操作。此外,我在触发方法INITIALIZED事件后以编程方式将子项添加到视图中。这使得View需要更多的时间来重新计算其子项的属性,并向其DisplayList添加更多组件,即使它的生命周期的那一部分应该完成。这使得渲染到最终状态需要更多时间,从而中断从View到View的转换。我需要做的是在将组件添加到DisplayList之前配置组件,并在createChildren()方法完成之前向View添加更多组件。

至少根据我的经验,达到“正常”表现的最好和第一个建议是遵守生命周期的指导方针。尊重过程的构造,配置,附件和初始化部分,你会没事的。如果您不这样做,Rod提到的所有建议都不会有助于您的应用程序顺利执行。

确实,只有遵守生命周期,您才能使应用程序达到最佳性能。为此,你肯定需要前面提到的建议,但这些技巧,我称之为冰山的第二部分。首先,代码遵循组件生命周期的准则;第二,遵循Rod的所有提示。有了这两个,你将拥有一个快速运行的应用程序。

3 个答案:

答案 0 :(得分:1)

在我的Flex-Mobile应用程序中,我没有尝试过使用任何框架。为了优化我的应用程序,我正在做以下提示:

  • 在AS上编写项目渲染器
    • 子类LabelItemRendererIconItemRenderer
    • 避免复杂绑定
    • 将autoDrawbackground设置为关闭
  • 在Spark Image上使用BitmapImage
    • 使用PNG而不是JPEG或GIF。它需要较少的图像解码和渲染时间
  • 文本 - 使用StyleableTextfield(只能在AS中使用)
  • 在AS中编写皮肤(扩展MobileSkin
  • 在AS3中编写自定义组件而不是MXML
  • setElementSize比设置宽度和高度便宜
  • setElementPosition比设置x和y属性便宜
  • 使用轻量级组件(即标签)
  • 使用cacheAsBitmap属性
    • 不经常更改但经常重新绘制的组件
    • 可以缓存为Bitmap以优化渲染时间
  • 请勿使用BorderContainer,请使用Group + Rect
  • 减少嵌套组的数量
  • 使用Scroller.viewport代替Scroller.verticalScrollbar

答案 1 :(得分:0)

您的应用中是否有列表?你可以重写ItemRenderers等。

答案 2 :(得分:0)

罗德所说的每一个提示都非常重要。它将改善构造良好的应用程序的性能并使其顺利运行。这些提示的问题在于它们是冰山的较小“一半”而不是更大的“一半”。

我的应用程序从一个View转换到另一个View非常缓慢,这是因为我并没有“尊重”Flex的组件生命周期。我的意思是,在将组件添加到View的DisplayList并进行验证后,我正在执行组件配置操作。此外,我在触发方法INITIALIZED事件后以编程方式将子项添加到视图中。这使得View需要更多的时间来重新计算其子项的属性,并向其DisplayList添加更多组件,即使它的生命周期的那一部分应该完成。这使得渲染到最终状态需要更多时间,从而中断从View到View的转换。我需要做的是在将组件添加到DisplayList之前配置组件,并在createChildren()方法完成之前向View添加更多组件。

至少根据我的经验,达到“正常”表现的最好和第一个建议是遵守生命周期的指导方针。尊重过程的构造,配置,附件和初始化部分,你会没事的。如果您不这样做,Rod提到的所有建议都不会有助于您的应用程序顺利执行。

确实,只有遵守生命周期,您才能使应用程序达到最佳性能。为此,你肯定需要前面提到的建议,但这些技巧,我称之为冰山的第二部分。首先,代码遵循组件生命周期的准则;第二,遵循Rod的所有提示。有了这两个,你将拥有一个快速运行的应用程序。