【发布时间】:2010-12-05 23:27:10
【问题描述】:
对于那些为手机编写应用程序的人,为了提高能源效率,您修复了哪些错误/问题,修复改进了多少?
一个后续问题:在编写移动应用程序时,能源效率是否与功能和避免功能错误一样重要?
【问题讨论】:
标签: iphone android mobile energy energysmart
对于那些为手机编写应用程序的人,为了提高能源效率,您修复了哪些错误/问题,修复改进了多少?
一个后续问题:在编写移动应用程序时,能源效率是否与功能和避免功能错误一样重要?
【问题讨论】:
标签: iphone android mobile energy energysmart
首先要回答后续问题,很少有客户会注意到使用特定应用在能源效率或电池寿命方面的任何差异。这在 App Store 评论中几乎从未提及。我编写节能代码主要是因为我不想在测试和使用我的应用程序时耗尽自己设备的电池。
对 iPhone 应用的一些建议:
编写您的应用程序,使其在最慢的设备(iPhone 2G 或 3G)和最慢的操作系统(3G 上的 4.x)上运行良好。然后它可以在速度更快的当前设备上大部分处于空闲状态。
在图形例程中,尽量不要重绘已绘制的任何内容。使用小型 CALayer 或子视图进行本地化图形更新/更改。
尽可能多地使用异步方法,这样您的应用甚至大部分时间都不会在 CPU 上运行。
尽可能使用纯 C 数据结构(而不是 Foundation 对象)并将它们打包,以便您的应用程序的工作集可以完全驻留在非常有限的 ARM CPU 数据缓存中。
不要进行不必要的联网。一次进行尽可能大的数据传输,以便在您的应用网络使用期间无线电可以关闭更长的时间,而不是大量连续的小传输。
【讨论】:
移动开发中的能源效率相当于嵌入式系统中的内存限制。
具体来说,我喜欢 GPS 应用程序,因此请确保 GPS 仅在最短的时间内开启。当然,当引入的错误导致 GPS 开启时间过长时,它们会进入列表顶部进行修复。
所以,简短的回答是:是的,能源效率绝对和功能一样重要。
【讨论】:
EE 很重要,尤其是当应用程序在后台持续运行时。
我们必须尽可能将轮询方法替换为基于事件的方法。如果不可能,我们会降低轮询频率。
还将文件读/写次数降至最低,从而大大减少电池消耗。
【讨论】:
【讨论】:
在我基于 opengl 的动态壁纸中,电池寿命是一个重大问题。
将传感器的使用保持在最低限度,有很多不同的配置文件,使用您需要的延迟。
为了最大限度地提高 LWP 中的电池电量,我通常会在默认情况下强制设置 5 毫秒的帧延迟。这似乎足以让 CPU 在帧之间放松并保持合理的低使用率。您还可以根据当前 FPS 管理超时并将其固定到 FPS 配置文件。例如。设备可以渲染 60fps,但您只是以 30fps 渲染并且有一半时间处于休眠状态。
对于游戏,您也可以这样做,只需在引擎中设置 fps 限制,不要让它超过该限制。
如果您想成为铁杆,请意识到许多 Android 设备中使用的 OLED 使用更多的功率来显示浅色而不是深色。在 LCD 上有相同的背光,但在 OLED 上,黑色像素实际上是关闭的并且不使用电源。所以你的屏幕越暗,你的电池寿命应该越长。如果您想在电池方面成为真正的铁杆,在某些情况下需要考虑一些事情。
不要使用 GPS,不要使用 3G,如果你在本地缓存所有内容。
【讨论】: