Android 应用CPU耗电监控分析
Android 应用CPU耗电监控分析
前言:
智能手机电量的消耗是由多种因素造成的,如屏幕的材质、大小、亮度,通信组件的功率,cpu,电池等。本文仅从软件应用对电量的消耗这个角度对耗电控制进行探索。
获取手机当前电量:
Android以广播的形式通知应用当前的电量使用情况,开发者可以很方便的获取到当前的电池电量信息:
首先,注册一个接收者:
在自定义的receiver中获取电量信息:
CPU使用率:
软件的耗电主要是由于CPU的工作引起的。因此,如果计算出每个软件某一时段的cpu占用率,即可对各个软件的耗电程度有一个基本的了解。
Android的API中没有直接提供可查询cpu使用率相关的接口,但是作为android的底层,linux系统中却可以很方便地查询到当前的cpu信息以及实时的cpu使用情况。在得到相关数据后,经过计算,就可以得到每个软件的cpu使用率。
以下为具体的实现:
1. 通过程序访问/proc/stat获取cpu总体使用情况;
如:
~$ cat /proc/stat
cpu 38082 627 27594 893908 12256 581 895 0 0
...
其中,每个字段分别代表user、nice、system 、idle、iowait、irq、softirq、 stealstolen、guest这几个参数自系统启动以来所产生的节拍数。
当前总的节拍数为Total = user + nice + system + idle + iowait + irq + softirq + stealstolen + guest;
如:
在相对较小的间隔内,先后取两次总节拍数,如Total1和Total2.
2 访问/proc/<pid>/stat获取某一进程cpu使用情况。
如:
~$ cat /proc/14020/stat
14020 (doujia.phoenix2) S 120 120 0 0 -1 4194624 181165 3227 211 2 22817 4810 7
25 20 0 40 0 9902620 346767360 12470 4294967295 1 1 0 0 0 0 4612 0 38120 4294967
295 0 0 17 0 0 0 0 0 0
其中,第14~17字段分别为utime, stime, cutime, cstime。它们的总和及当前进程的cpu总节拍数。
当前进程自系统启动以来所产生的总节拍数为pt = utime+stime+cutime+cstime
如:
在相对较小的间隔内,先后去两次总节拍书,如pt1和pt2.
3 计算进程的cpu使用率
某进程的cpu使用率 = (pt2-pt1) * 100 / (Total2-Total1)
如:
如果要获取所有程序的使用率,只要简单ps出进程并以grep或其他形式过滤下,取到pid后,遍历计算即可。
这样,就基本得出了当前系统内各软件的cpu使用率。Cpu使用率高的程序,耗电量自然也相对较大。
剩余电量使用时间的计算思路
由于电量的消耗的是由多种因素造成的,因此剩余时间一般只能是估值。
以如下方式估算剩余时间:
剩余时间 = 电池容量 / 硬件(屏幕/cpu等)的功耗
假设在电池容量固定的情况下,硬件的功耗就决定了电量的剩余使用时间。
Android手机中,耗电最大的模块一般有屏幕、cpu、wifi、GPS等。
a) 屏幕的功耗:
1) 获取当前手机型号:android.os.Build.MODEL
2) 获取屏幕尺寸:getWindowManager().getDefaultDisplay()
3) 获取屏幕亮度:
通过以上素材,配合相应的硬件资料,以估算屏幕的功耗。
b)CPU功耗:
1) 获取当前手机型号:android.os.Build.MODEL
2) 获取cpu信息:/proc/cpuinfo
如:
shell@android:/ $ cat /proc/cpuinfo
cat /proc/cpuinfo
Processor : ARMv7 Processor rev 3 (v7l)
processor : 0
BogoMIPS : 2007.19
processor : 1
BogoMIPS : 2007.19
Features : swp half thumb fastmult vfp edsp neon vfpv3
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x1
CPU part : 0xc09
CPU revision : 3
Hardware : T1 Samsung board
Revision : 0007
Serial : 000090423c62b4ce
通过以上素材,配合相应的硬件资料,以估算CPU的最大理论功耗。
3) 在得到最大功耗后,根据cpu使用率,可以对当前的cpu耗电情况作一个基本的估算
在得到所有主要耗电硬件的功耗、电池的理论上的最高容量、当前电量百分比后,就可以估算出剩余电量的使用时间了。
Android 应用CPU耗电监控分析相关推荐
- Android Studio CPU profiler性能分析工具介绍和使用详解
Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...
- Android功耗(21)--- App耗电发热分析
Android App耗电发热分析 adb shell dumpsys batterystats 这个命令可以打印出于电池消耗相关的信息,可以通过 adb shell dympsys batterys ...
- Android App耗电发热分析
如题,这是一篇分享如何分析Android平台App耗电问题的文章,今天学到的新技能,算是之前写过的一篇文章Android APP耗电优化的一些经验的续集吧,O(∩_∩)O. 首先,上一个adb命令: ...
- android 获取cpu使用率_超详细的zabbix监控windows磁盘IO及cpu使用率教程
概述 今天主要介绍怎么用zabbix来监控windows CPU使用率及磁盘IO,下面一起来看看吧~ 1.监控Windows-CPU使用率 1.1.创建模板 在zabbix中,默认的模板不带CPU使用 ...
- Android基础性能检测与分析
本文内容:基于Android基础性能检测与分析 版权声明:本文为原创文章,未经允许不得转载 博客地址:http://blog.csdn.net/kevindgk 前言 UI性能分析 应用启动时间计算以 ...
- Android高手笔记 - 耗电优化
耗电的背景知识 电池技术:电池容量,充电时间,寿命,安全性: 电量和硬件:应用程序不会直接去消耗电池,而是通过使用硬件模块消耗相应的电能:CPU.屏幕.WiFi 和数据网络.GPS 以及音视频通话都是 ...
- 【错误记录】应用运行 CPU 占用率达到 90% ( 使用 CPU Profiler 监控应用运行情况 )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 Android 运行时 , 进入某界面后 , 退出界面 , CPU 占用率泄漏 12 % , 某个线程没有退出 , 一直在后台运行 ; 再次进入 ...
- 微信Android客户端的卡顿监控方案
2021.8.1 Matrix 2.0 TraceCanary新增了以下功能 微信Android客户端的卡顿监控方案 https://mp.weixin.qq.com/s/3dubi2GVW_rVF ...
- 基于android系统DVR稳定性问题分析及对策
基于android系统DVR稳定性问题分析及对策 DVR,全名Digital Video Recorder,数字视频录像机,在车载行业大家通俗的叫行车记录仪,因为这个数字视频的内容是行车的形式动态.如 ...
最新文章
- 【数据库】mysql报错 编码码1130 和错误码1146
- win10 安装pydot
- LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)
- ps怎么制作流体_PS教程:制作渐变流体效果海报
- 降低数据中心功耗的 4 大方法
- python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...
- 基于Cairngorm的Silverlight开发 - part3
- 一文详解MySQL中的事件调度器EVENT
- sql简介_SQL简介
- 梦到曦和二字与公司起名
- NanoPi M1 Plus:Allwinner H3使用lichee源码编译Linux-3.4 BSP
- c语言考试中操作题文件,计算机二级考试C语言操作题题库(21页)-原创力文档...
- 顺序表-有序顺序表的归并算法(新建表+小的先放+余下归并)
- PhotoShop 保存 8 bit 位图(Bmp)的方法【记录备忘】
- ubuntu14.04扩展屏幕后,打开matlab就死机。求大神帮忙解决!!!万分感谢
- BIhuman商业智能和数据仓库高
- Sparse Matrix, MUMPS
- c语言遍历枚举,C# Enum 类型遍历
- WML语言基础(WAP建站)二
- 【起航计划 001】2015 起航计划 踏在起跑线上
热门文章
- windows系统硬盘序列号、MAC地址查询方法
- Python复盘股票_搭建系统|“财务数据选股工具”如何与“多维度股票行情分析工具”完成无缝切换...
- 地理信息技术——平民化时代的来临(一)
- 有没有大佬知道,有哪些可以在网页上自动填写账号密码并登录的方法?
- C#中关于SqlCommand的使用
- 祁文之恋——离开你的第五天
- excel一列求和_让excel填写数据后自动填充公式运算的方法
- JVM详解——内存结构
- 如何破解修改Linux操作系统用户密码
- android systemserver 占用cpu 高,关于system/bin/mediaserver占用CPU高的 解决方法