iphone 4上的air app性能问题

时间:2013-01-22 15:33:55

标签: ios performance mobile air

目前我正在开发适用于iOS和Android的Air应用。 Air 3.5是目标。 经过大量优化后,iPhone 4 / 4s的性能总体上是可以接受的:gpu渲染,StageQuality.LOW,尽可能地避免向量等等。我真的付出了很多努力来提升性能。

但是,每隔一段时间,该应用程序变得非常缓慢。在此之后没有精确的时间点或动作或动作组合。有时,它不会发生数天。但是当它发生时,只杀死应用程序并再次启动它有帮助,因为应用程序在此之后保持缓慢。所以我不是在谈论轻微的打嗝 问题仅发生在(某些)iPhone 4和4上。不适用于iPad 3,4,iPhone 5,任何Android设备......

是否有人有类似的经验和指针可以找到解决方案? 当gpu内存填满时会发生什么?还是设备内存?这可能涉及吗?

2 个答案:

答案 0 :(得分:1)

请不要指望Adobe Air具有Native Apps的性能。我正在使用Adobe Air开发App。

通过您的开发经验的声音。我认为这与内存问题有关,因为在乞讨阶段性能不是太糟糕,但加时不好(所以你必须杀掉应用程序)。我建议你研究内存泄漏问题。

答案 1 :(得分:0)

希望我的经验可以帮到你。

我遇到了类似的问题,在游戏过程中,帧速率会从30fps下降到不可恢复的12fps。起初我以为我的GPU内存耗尽,而且它正在重新使用CPU渲染。

使用Adobe Scout我发现当发生这种情况时,渲染时间很荒谬。

更新到Air 3.8,我通过限制一次渲染和内存中的位图数量来解决问题。我只会为适当的级别创建新的背景实例,然后在级别结束时标记它们以进行垃圾收集,等待几秒钟然后再移动到下一级别。

可以解决您的问题的方法是,如果您一次减少内存中的纹理数量,只显示您需要的纹理数量。如果要将活动纹理替换为新纹理,请将具有该纹理数据的所有对象设置为null:

testMovieClip = null;

并从中删除所有侦听器,以便垃圾收集将其拾取。 接下来,您可以使用AIR强制进行垃圾回收:

System.gc();

在调用gc后实例化要渲染几帧的新纹理。使用Scout和iOS配套应用程序监控资源,以确认它是否正常工作。

您还可以尝试检测帧速率何时下降,并将某些对象设置为null然后强制进行垃圾回收。在我的情况下,如果我使用垃圾收集将游戏移动到空帧几秒钟,帧速率将恢复,游戏将恢复使用GPU渲染。

希望这有帮助!