检测电池电量和充电状态

当我们想要更改后台数据的刷新速率来减少对用户影响的时候,先检测下当前的剩余电量和充电状态是个不错的开始。

在执行更新数据操作对用户电池寿命的影响取决于当前的剩余电量和充电状态。当设备在通过交流电充电的时候去更新数据对设备电池寿命的影响是微不足道的,所以在大部分情况下当设备在使用交流电充电的时候,您都可以最大化您的数据更新频率。相反的,如果设备没有在充电,减少更新速率会延长设备电池的使用寿命。

同样,您还可以检测电池电量信息,当剩余电量很少的时候,您可以减少更新频率 甚至停止更新。

检测当前的充电状态

BatteryManager 会广播所有的电池和充电详细信息,通过 Intent 可以获取这些状态。

由于这是个密集型(sticky)通知,所以您不需要注册一个 BroadcastReceiver,只要简单的调用 registerReceiver 该函数并设置参数为 null 即可获得到包含了电池信息的Intent,当然您也可以设置一个 BroadcastReceiver 对象作为参数,我们会在后面小节中看到这种情况,暂时我们先设置其为null吧, 代码如下:

如果当前设备正在充电的话,您还可以获取具体的充电方式 — 通过USB或者交流电充电:

当设备在使用交流电充电的时候,您可以最大化数据更新频率;如果在使用USB充电,您应该减少更新频率;如果没有在充电 更新频率应该更小。

检测充电状态的改变

设备是否充电是经常发生的,所以根据设备是否充电来修改更新频率是非常重要的。

无论设备充电或者停止充电 BatteryManager 都会广播一个消息。即使您的程序没有正在运行也应该监听这个事件,这样您可以根据不同的状态来判断是否需要启动后台更新程序。您可以在Manifest文件中注册一个同时监听 ACTION_POWER_CONNECTED 和 ACTION_POWER_DISCONNECTED 消息的 BroadcastReceiver 。

在这个 BroadcastReceiver 实现中,可以查询当前的状态。

检测当前剩余电量

有些情况下根据当前剩余电量做些改动也是有用的。当电量低于一定值的时候可以修改后台数据的更新频率。

您可以通过如下示例代码来获取剩余电量信息:

检测明显的电量改变

你无法很轻松的检查连续的电池状态改变,而且您也无需这么做。

一般来说,联系的检查电量信息可能比您后台更新数据还要费电,所以只监听一些重要的电量状态比较有意义,例如监听合适设备进入或者离开低电状态。

下面的示例代码中的Receiver只监听设备进入低电状态或者离开低电状态的变化;使用了 ACTION_BATTERY_LOW 和 ACTION_BATTERY_OKAY 这两个Intent过滤器。

一般来说,当电量极其少的时候,关闭后台数据更新是个不错的做法。当用户没电关机了您的数据再新都没有意义哇。

有些情况下设备会放到底座上使用,下节课程会讲述如何判断当前的底座状态以及检测底座的变化。



Read more: http://blog.chengyunfeng.com/?p=274#ixzz4SiTcekUp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值