【发布时间】:2012-04-13 00:48:28
【问题描述】:
为了在 AIR for iOS 应用程序中保持低功耗(或降低消耗过多电池的现有应用程序的功耗),可以应用哪些编码技巧、编译标志、软件架构注意事项?
【问题讨论】:
标签: ios actionscript-3 optimization air power-management
为了在 AIR for iOS 应用程序中保持低功耗(或降低消耗过多电池的现有应用程序的功耗),可以应用哪些编码技巧、编译标志、软件架构注意事项?
【问题讨论】:
标签: ios actionscript-3 optimization air power-management
一般来说,高功耗可能是由于:
关于(flex/flash)AIR,我建议:
首先,您使用 Flex 分析器 + 任务管理器并监控 CPU 和内存使用情况。尽量减少它们。一旦你在 windows/mac 上的值这么低,它们就会降低(理论上在移动设备上)
下一步是使用网络监视器并减少网络(网络服务)调用的数量和大小。尝试识别不需要的网络活动并将其消除。
尝试检测应用程序的任何空闲状态(可能在 flex 中,不确定 flash)并可能将整个应用程序置于空闲模式(如果您正在运行烟花动画,则只需调用 stop())
我也不确定,但肯定会减少 cpu 并使用更多 gpu:通过使用 Stage3D(现在可用于移动设备的 air 3.2)当您执行复杂的动画时。由于有硬件加速,它可能会减少执行时间,因此功耗可能会更低。
如果我对某件事有误,请评论/投反对票(如你所愿),但这是我个人的印象。
更新 1
正如 cmets 中的提示,台式机和移动设备上的 cpu 使用率之间并没有 100% 的联系,但“理论上”在低级别上,我们至少应该有相同的 cpu 使用率趋势。
【讨论】:
您可以做的最重要的事情之一就是根据应用状态调整帧速率。
您可以通过在 App.mxml 中添加处理程序来做到这一点
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
activate="activate()" deactivate="close()" />
在您的激活和关闭方法中
//activate
FlexGlobals.topLevelApplication.frameRate = 24;
//deactivate
FlexGlobals.topLevelApplication.frameRate = 2;
您也可以根据您的应用当前正在执行的操作来调整这个数字。如果您只是显示文本,请尝试降低 fps。这应该可以为您节省最大的电量。
【讨论】:
我的建议:
重要的是:
Simulator、IPA-Interpreter 包和 IPA-Test 构建的行为不同。
模拟器 - 形式优化
IPA-Interpreter - 感受表演
IPA-Test - “真实”的性能行为
最后测试AppStore-Build,它是最快(从性能的意义上来说)的打包模式。 我们还看到,所有这些模式都可以变化。
【讨论】: