设备中的每个硬件都会消耗能耗,而最大的消费者就是CPU。应用计算越多,消耗的电量越多。在完成相同的操作,老一代的设备会消耗更多的电量。
CPU
计算量的消耗取决于不同的因素
* 对数据的处理(例如:对文本进行格式化)
* 待处理的数据大小—更大的显示屏允许软件在单个视图中展示更多的信息,但这也意味着要处理更多的数据
* 处理数据的算法和数据结构
* 执行更新次数,尤其是在数据更新后,触发应用的状态或UI进行更新
推荐的做法
* 针对不同的情况选择优化算法
* 如果应用从服务器接收数据,尽量减少需要在客户端进行的处理
* 优化静态编译处理,例如UITableview渲染一组记录时,不建议一次性全部显示或者快速滚动时立即载入记录,而是推迟到滚动速度降到一定的阈值再显示合理的条数
网络
智能的网络访问管理可以让应用响应得更快,也助于延长电池寿命。
因此我们需要:
* 在进行任何网络操作之前,先检查合适的网络是否可用
* 持续监视网络的可用性,并在连接状态发生变化时给予适当的反馈
定位
* 关闭无关紧要的特性
* 后台定位时,每当收到更新后,都会唤醒线程和计时器
* 在其他应用程序需要更多资源时,后台的应用可能会被关闭。
在这种情况下,需要重新初始化监听,可以通过application:didFinishLaunchingWithOptions:方法会收到键值为UIApplicationLaunchOptionsLocationKey的条目
屏幕
屏幕越大也会费电。
* 合理使用动画
* 视频播放
最佳实践
* 最小化硬件使用。换句话,尽可能晚地与硬件打交道,并且一旦完成任务立即结束使用
* 在进行密集型任务前,检查电池电量和充电状态
* 在电量低时,提示用户是否确定要执行任务,并在用户同意后再执行
* 或提供设置的选项,允许用户定义电量的阈值,以便在执行密集型操作前提示用户