应用应该尽可能省电——可持续发展的重要性
2013-04-29 18:20
274 查看
智能手机的续航能力一直是一个令用户头疼的问题。作为 android APP 的开发者,我们无法去纠正操作系统本身的设计缺陷,但是应尽可能让我们的 APP 本身不要做太多的无用功来浪费宝贵的电能。
l 通过当前的充电状态来控制更新频率:当你的手机连接到交流电源时最大化你的更新频率,如果连接到USB 或者正在放电时则更新的频率依次减少。
l 时刻监控充电状态很重要,因为你的设备随时都有可能从插座中拔出或插入插座中。
l 通过当前的电量水平来控制更新频率:当你的电量水平小于某个阈值时降低你的后台更新速度。
l 不要时刻监控电量水平,而只监控关键的电量值,因为电量水平持续变化,有可能监控电量水平的耗电程度反大于你的后台更新引起的耗电量。
监控电量水平和充电状态通过BatteryManager broadcasts 来实现,详细的用法请参考:
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
对于底座对后台更新频率的影响而言,大家基本上可以将其视为一个另类的充电器。我们可以通过BroadcastReceiver 的ACTION_DOCK_EVENT 事件来监控底座的连接状态和连接的底座类型。
l 连接可用时更新,反之停止更新。
l 在运营商移动网络环境下的网络更新速率应该小于 WIFI 环境下的更新速率。因为在移动网络环境下进行网络更新会消耗更多的资源,更容易耗电。
l 不应持续监控网络环境。因为网络环境很可能经常变化,因网络类型的反复切换而导致的网络更新反复调度将消耗更多资源。只在网络更新停止后进行监控是个好主意,并且每次更新前简单判断连接是否可用即可。请参考下节——按需启动Broadcast Receivers。
结合ConnectivityManager 和broadcast receivers 来检查并监控网络连接性和连接类型:
http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
正如上节所述,当我们进行网络更新之前即时判断网络是否可用,如不可用则停止更新,转而开启监控网络的Broadcast Receiver,一旦接收到网络可用事件,则关闭监控,同时开启网络更新。
通过PackageManager 可以在运行时开启或关闭你在 manifest 中定义的任何组件,包括 Broadcast Receivers,详细使用请参考:
http://developer.android.com/training/monitoring-device-state/manifest-receivers.html
1 监测电量和充电状态
如果你的 APP 在后台需要进行事务更新,那么更新的频率必须是一个值得慎重思考的问题,如果持续更新而不加限制,那无疑会加速电量消耗,而且也是不必要的。当你需要在后台线程进行这样的更新时,确保通过检测和检查电量和充电状态来控制更新的频率。l 通过当前的充电状态来控制更新频率:当你的手机连接到交流电源时最大化你的更新频率,如果连接到USB 或者正在放电时则更新的频率依次减少。
l 时刻监控充电状态很重要,因为你的设备随时都有可能从插座中拔出或插入插座中。
l 通过当前的电量水平来控制更新频率:当你的电量水平小于某个阈值时降低你的后台更新速度。
l 不要时刻监控电量水平,而只监控关键的电量值,因为电量水平持续变化,有可能监控电量水平的耗电程度反大于你的后台更新引起的耗电量。
监控电量水平和充电状态通过BatteryManager broadcasts 来实现,详细的用法请参考:
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
2 监测底座状态和类型
底座(dock)大家平时应该用的少,但大概都见过,上图给个感性认识:对于底座对后台更新频率的影响而言,大家基本上可以将其视为一个另类的充电器。我们可以通过BroadcastReceiver 的ACTION_DOCK_EVENT 事件来监控底座的连接状态和连接的底座类型。
3 监测网络连接状态
这一节是针对后台的网络数据下载和缓冲更新而言的(后文简称“网络更新”)。网上下载数据会大量耗电,这是众所周知的,因此根据网络连接状态和类型合理控制网络更新速率是非常必要的。l 连接可用时更新,反之停止更新。
l 在运营商移动网络环境下的网络更新速率应该小于 WIFI 环境下的更新速率。因为在移动网络环境下进行网络更新会消耗更多的资源,更容易耗电。
l 不应持续监控网络环境。因为网络环境很可能经常变化,因网络类型的反复切换而导致的网络更新反复调度将消耗更多资源。只在网络更新停止后进行监控是个好主意,并且每次更新前简单判断连接是否可用即可。请参考下节——按需启动Broadcast Receivers。
结合ConnectivityManager 和broadcast receivers 来检查并监控网络连接性和连接类型:
http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
4 按需启动 Broadcast Receivers
如上一节提到的,我们不应持续监控网络环境,因为那将导致做无用功,当你注意到你的 Broadcast Receivers 太忙于做不必要的监控的时候,就应该考虑让它们在运行时启动。正如上节所述,当我们进行网络更新之前即时判断网络是否可用,如不可用则停止更新,转而开启监控网络的Broadcast Receiver,一旦接收到网络可用事件,则关闭监控,同时开启网络更新。
通过PackageManager 可以在运行时开启或关闭你在 manifest 中定义的任何组件,包括 Broadcast Receivers,详细使用请参考:
http://developer.android.com/training/monitoring-device-state/manifest-receivers.html
相关文章推荐
- 项目经理应该关注新技术应用及发展
- 2008-2009化学信息学(计算机化学)的研究进展(1)——化学信息学在社会与经济可持续发展中的地位与重要性
- IFC标准是为了满足建筑行业的信息交互与共享而产生的统一数据标准,是建 筑行业事实上的数据交换与共享标准。本文概要介绍了IFC标准的产生及发展 历程,IFC的整体框架结构,简要说明了IFC标准的实现方法和过程,描述了 当前的应用以及我们应该更加积极地利用IFC标准为建筑软件行业服务。
- 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术
- SOA架构炒到2.0 降低成本与应用成发展目标
- Java Web应用中调优线程池的重要性
- 透视SOA意义 分析、应用与发展
- 实施可持续发展战略
- Android开发者应该深入学习的10个开源应用项目
- 你应该将应用迁移到Spring 4的五个原因
- 准技术人员的职业发展应该注意什么
- 现在需要在某天举办一场生日晚会,邀请生日在当天的人员参加。如果期望这场生日晚会参加的人员尽可能多,那么应该选择在哪一天?
- 关于应用为王的未来发展趋势的一些想法
- 【转】2011年物联网技术在仓储业应用发展趋势
- 开发人员和设计师应该安装的10个Android应用
- 设计师应该关注的科技发展方向(五)
- Linux应用与发展视频下载
- 高斯混合模型学习及其在端点检测当中的应用及其后期的发展
- 场景应用,平台化成为发展方向
- 惠普为企业的可持续发展提供“源”动力