应用应该尽可能省电——可持续发展的重要性

智能手机的续航能力一直是一个令用户头疼的问题。作为 android APP 的开发者,我们无法去纠正操作系统本身的设计缺陷,但是应尽可能让我们的 APP 本身不要做太多的无用功来浪费宝贵的电能。

 

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

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值