【问题标题】:AIR for iOS: Power savingAIR for iOS:省电
【发布时间】:2012-04-13 00:48:28
【问题描述】:

为了在 AIR for iOS 应用程序中保持低功耗(或降低消耗过多电池的现有应用程序的功耗),可以应用哪些编码技巧、编译标志、软件架构注意事项?

【问题讨论】:

    标签: ios actionscript-3 optimization air power-management


    【解决方案1】:

    一般来说,高功耗可能是由于:

    • 密集的网络使用率
    • 应用空闲时显示没有睡眠模式
    • 不需要的位置服务使用
    • cpu 使用率一直很高

    关于(flex/flash)AIR,我建议:

    首先,您使用 Flex 分析器 + 任务管理器并监控 CPU 和内存使用情况。尽量减少它们。一旦你在 windows/mac 上的值这么低,它们就会降低(理论上在移动设备上)

    下一步是使用网络监视器并减少网络(网络服务)调用的数量和大小。尝试识别不需要的网络活动并将其消除。

    尝试检测应用程序的任何空闲状态(可能在 flex 中,不确定 flash)并可能将整个应用程序置于空闲模式(如果您正在运行烟花动画,则只需调用 stop())

    我也不确定,但肯定会减少 cpu 并使用更多 gpu:通过使用 Stage3D(现在可用于移动设备的 air 3.2)当您执行复杂的动画时。由于有硬件加速,它可能会减少执行时间,因此功耗可能会更低。

    如果我对某件事有误,请评论/投反对票(如你所愿),但这是我个人的印象。

    更新 1

    正如 cmets 中的提示,台式机和移动设备上的 cpu 使用率之间并没有 100% 的联系,但“理论上”在低级别上,我们至少应该有相同的 cpu 使用率趋势。

    【讨论】:

    • 您可能还想看看调整帧率。每当您不制作动画或应用程序不再处于焦点时,请尝试降低它。
    • 不确定台式机的任务管理器在多大程度上反映了 AIR 应用程序的实际 CPU 使用率。请记住,编译后的应用程序(发布版本)将与模拟器有很大不同。就个人而言,我宁愿查看 Flex 分析器显示的方法的编译时间。如果可能的话,如果您想要部署应用程序的实际 CPU 使用率,那么设备上的任务管理器可能是可行的方法,但如果我没听错,这只有在 Android 上的 ICS 上才有可能。
    • @Al_Birdy 肯定 iPhone CPU 的架构与桌面 CPU 完全不同,再加上 AIR 应用程序的 AS 代码被翻译成二进制代码 iOS 兼容,所以肯定没有 100%两者之间的匹配。但是在桌面上为您的 air 应用程序提供 100% 的 cpu 使用率肯定会在移动设备上产生高 cpu 使用率。
    • @lost 你是完美的......当应用程序处于空闲模式时,降低帧率是一个很好的做法。 :)
    • 毫无疑问,桌面上通常较低的 CPU 消耗会以某种方式反映设备上的 CPU 使用情况,完全同意您的观点,但这更像是一种大锤重构方法;)。
    【解决方案2】:

    您可以做的最重要的事情之一就是根据应用状态调整帧速率。

    您可以通过在 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。这应该可以为您节省最大的电量。

    【讨论】:

      【解决方案3】:

      我的建议:

      • 首先使用 Flash Builder 中的分析器分析您的应用程序
      • 如果您有 Mac,请使用 XCode 中的 Instruments 分析您的应用程序

      重要的是:

      Simulator、IPA-Interpreter 包和 IPA-Test 构建的行为不同。

      模拟器 - 形式优化

      IPA-Interpreter - 感受表演

      IPA-Test - “真实”的性能行为

      最后测试AppStore-Build,它是最快(从性能的意义上来说)的打包模式。 我们还看到,所有这些模式都可以变化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多