业界动态
Android 性能测试小工具 (cpu,内存,电量,流量数据浮窗显示,信息导入数据库、sd卡)手机性能测试「Android 性能测试小工具 (cpu,内存,电量,流量数据浮窗显示
2025-01-12 01:21

【mie haha的博客】转载请注明出处(万分感谢
https://blog.csdn.net/qq_40315080/article/details/98610748

写一个测试各个app/手机性能的小工具app。

功能

  1. 打开app得到手机中已有的应用列表,点击可以跳转进入。
  2. 上方标题栏上有选择菜单,可以选择打开,刷新,关闭浮窗,浮窗可以拖动。
  3. 打开浮窗后,浮窗将显示顶层(当前所在)app的cpu占用、内存、流量,手机总cpu占用、电量数据,每几秒实时更新数据。
  4. 一个开关按钮,点击控制数据导入数据库和SD卡或停止导入。(可选)
  5. 一个选择按钮,点击控制监测限定某个app或监测顶层app的数据。(可选)
  6. 点击浮窗返回该小工具app界面。(可选)

(标记可选的与主要功能无关,只是使使用稍微更方便,可以选择性添加)

主要功能代码

首先小工具app打开是手机中app列表,需要先得到app列表。

1.获取app列表

每个app有它对应的名称,包名,进程号(pid),uid。
【pid:每个app运行时都会开启一个进程来实际运行,用pid来标识这个进程,有的app可能会开启多个进程。
在利用android自带的方法获得数据时都是通过pid获取数据,对于多进程app需要把所有进程的数据相加。】
【uid:像一个身份证,唯一地标识某个app。】
【一般包名和名称相比pid和uid更容易得到。】

将app的信息封装在一个类中方便使用。再用该类创建一个列表来保存所有的app信息。最后将这个列表显示在界面上即可得到app列表。

(1)封装app信息

 

(2)创建列表,把获得的app信息加入列表(以下代码写在MainActivity中)

 

app信息列表用LisView来显示,每一项包括app图标,app名称,包名。这需要给ListView添加适配器,用适配器来指定每一项的形式和内容。

(3)适配器

 

并给ListView列表添加适配器

 

(4)最后,实现点击跳转,需要给ListView添加点击监听器

 

2. 打开,关闭,刷新浮窗(可拖动)

(1)首先把打开浮窗,浮窗显示信息,浮窗跟随手移动都写在一个方法中,这样在界面上直接调用这个方法就好。

在浮窗上显示信息其实就是在浮窗上显示一个文本框TextView,可被拖动就是给TextView添加触摸监听器,每次得到手触摸的位置坐标并按照该坐标更新TextView的显示坐标即可。

 

(2)完成了打开浮窗的方法,接下来调用即可。但不是所有手机都可以允许app打开浮窗,这需要提前判断是否有打开浮窗的权限,如果没有权限,需要跳转到权限界面打开权限,再打开浮窗;如果有打开权限直接打开。

手机安装的sdk版本不同,有不同的默认权限设置。sdk高于23的手机一般默认没有打开浮窗权限,需要跳转权限界面打开。低于23的手机一般有权限,可直接打开。

 

浮窗已经有了雏形,但是缺少数据信息来显示。
因为要检测顶层app(即当前app)的数据,需要得到顶层app。

3. 获得顶层app

因为不同信息获取要用到的app信息不一样,取得顶层app时要取得app包名,名称,pid。uid。

包名

 

名称

 

pid

 

uid

 

4. 获得cpu总占用率

获得总体cpu占用率比获取某个app的cpu占用率简单。手机的性能数据都保存在系统中,我们只需要输入命令来调取即可。先来看一下系统中怎么保存的cpu信息

我们需要的数据信息全部保存在/proc文件下。数据根据系统自动更新。
连接手机,在命令行输入adb shell进入shell模式,再输入cat进行 /proc/stat文件 的查看。可以看到
在这里插入图片描述
(图片来自https://www.jianshu.com/p/6bf564f7cdf0

第一行是总cpu使用情况。一个手机可能有多个cpu,下面几行是多个cpu的各自使用情况。由cpu0—cpu3可知该连接的手机共有4个cpu处理内核。cpu数据的单位是jiffies,jiffies 是内核中的一个全局变量,用来记录系统启动以来产生的节拍数,根据不同的linux系统在1ms 到 10ms 之间。

用获取的信息计算使用率

公式:totalCPUrate = (非空闲cpu时间2-非空闲cpu时间1)/(cpu总时间2-cpu总时间1)x100%

一般在较短时间内进行2次取样,计算。
取得的cpu数据是10元组,包括user、nice、system、idle、iowait、irq、softirq、stealstolen、guest、guest_nice。

代码

 

5. 获得某个app的cpu占用率

用获取到的顶层cpu信息,取相应的数据获得某app的cpu使用率。

2.中已经得到了顶层app的pid,用pid获取该app的cpu信息

 

最后规定下显示的小数形式。

 

6. 获得某个app的内存

由app的包名得到app占用的全部内存

 

7. 获得某个app的流量

流量是接受量和发送量的总和。

由app的uid获得流量使用量

 

(app的uid的获得方法在2.中)

8. 把数据信息显示到浮窗,并实时刷新

要实时刷新,就是要不停重新获取数据。这就需要使用线程,把设置显示信息的语句放到线程中执行。安卓中不能直接写在Thread的run()方法中然后调用.start(),而要借助Handler,把更新数据语句写在的post()方法中,再调用.start()。否则会卡顿严重。

代码

 

然后在主界面(MainActivity)调用,开始线程即可

 

9. 把数据导入数据库

导入数据库是指以数据库文件.db形式导入到手机sd卡中,没有安装查看软件的手机无法直接点开.db文件查看,但是可以方柏霓导出到其他设备进行分析。

因为信息是实时更新,实时更新是在线程中实现的,所以导入数据库的语句也写在线程中。

把7.中的run方法稍作修改

 

10. 把数据以.txt形式导入手机sd卡

比数据库文件形式导入更简单

 

仍然在线程中修改,添加如下语句

 

修改后的导入.db和.txt文件到sd卡的线程代码

 

测试手机/某app性能的小工具完成。

以上代码全部完整,工程代码已上传。

仍在入门,如有错误,欢迎指出

    以上就是本篇文章【Android 性能测试小工具 (cpu,内存,电量,流量数据浮窗显示,信息导入数据库、sd卡)手机性能测试「Android 性能测试小工具 (cpu,内存,电量,流量数据浮窗显示】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/news/32444.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多   
最新文章
鞍钢ZQ235-Al热轧碳素钢 ZQ235-F自行车用冷轧碳素钢和钢板
我公司自创办以来一直以质量第一为宗旨,目前所销售的进口钢材有高速钢.粉末钢.钨钢.塑胶模具钢. 五金模具钢. 压铸模具用钢.
赵露思正面刚!直播激烈回应鼻子动了传闻,放狠话+质问,多年造谣忍不了了
家人们,你们听说了吗?赵露思在直播里又回应整容质疑了,这次是真的急眼了!8月9号那天,她正开开心心地直播呢,突然看到弹幕里
各方密集发声 “普特会”更多信息披露
美国总统特朗普与俄罗斯总统普京定于15日在美国阿拉斯加州举行会晤。会晤前,美俄欧乌等各方密集表态,释放更多信息。综合目前各
北京上门回收30年茅台酒瓶空瓶
北京上门回收30年茅台酒瓶空瓶30年茅台酒53度500ml回收价格大约为13700元左右,有着很高的市场价值。30年的茅台酒属于 高端酱香
AI冲击职场,今年美国已有逾1万个岗位因AI应用消失
【TechWeb】随着人工智能(AI)技术的迅猛发展,其对职场人的冲击持续加剧,科技行业的年轻人首当其冲。据人力资源机构Challenge
东城区东直门回收冬虫夏草
高价回收礼品;回收茅台,回收 五粮液,回收剑南春,回收国窖,回收水井坊单瓶及礼盒,回收各种老酒,回收贵州茅台酒, 高价回
(塑料防雾剂)塑料防雾母料 塑料薄膜防雾剂 塑料透明防雾母料
产品名称:塑料高透明防雾剂英文名称:SuLiaoGaoTouMingFangWuJi产品型号:UTA-GTM-GN-FWJ-MG-01产品介绍: 塑料高透明防雾剂又
黄石压缩空气第三方检验中心
我公司专业办理第三方压缩空气检测报告,提供全国范围内上门检测服务。压缩空气现场检测项目包括:固体颗粒、水含量、油含量、菌
144锭等编织机
我公司是编织机与电工机械的专业制造厂商。公司以团结、拼搏、开拓、进取是我经营宗旨.我公司生产的编织机被广泛应用于织带(鞋带
NN游戏社区以技术驱动革新,百万玩家体验再升级
深耕全球游戏服务领域五年的NN游戏社区,近日宣布完成服务体系全面升级。作为雷神控股旗下的全球游戏服务平台,自2020年上线以来