本文主要是介绍Android性能优化——电量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- Android性能优化——电量
- 1. 理解电池消耗
- 2. Battery Historian
- 3. 充电状态和BatteryManager
- 4. Wakelock和电池消耗
- 5. 网络和电池消耗
- 6. 使用JobScheduler
Android性能优化——电量
原Udacity视频链接
1. 理解电池消耗
手机各个硬件模块的耗电量是不一样的,有些模块非常耗电,而有些模块则相对显得耗电量小很多。
电量消耗的计算与统计是一件麻烦而且矛盾的事情,记录电量消耗本身也是一个费电量的事情。唯一可行的方案是使用第三方监测电量的设备,这样才能够获取到真实的电量消耗。
当设备处于待机状态时消耗的电量是极少的,以N5为例,打开飞行模式,可以待机接近1个月。可是点亮屏幕,硬件各个模块就需要开始工作,这会需要消耗很多电量。
使用WakeLock或者JobScheduler唤醒设备处理定时的任务之后,一定要及时让设备回到初始状态。每次唤醒蜂窝信号进行数据传递,都会消耗很多电量,它比WiFi等操作更加的耗电。
2. Battery Historian
Battery Historian是Android 5.0开始引入的新API。通过下面的指令,可以得到设备上的电量消耗信息:
adb shell dumpsys batterystats > xxx.txt //得到整个设备的电量消耗信息
adb shell dumpsys batterystats > com.package.name > xxx.txt //得到指定app相关的电量消耗信息
得到了原始的电量消耗数据之后,我们需要通过Google编写的一个Python脚本把数据信息转换成可读性更好的html文件,打开这个转换过后的html文件,可以看到生成的列表数据。
3. 充电状态和BatteryManager
我们可以通过如下代码获取现在的充电状态是否为AC充电。
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = this.registerReceiver(null, filter);
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean acCharge = (chargePlug == BatteryManager.BATTERY_PLUGGED_AC);
if (acCharge) {Log.v(LO
这篇关于Android性能优化——电量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!