Android获取cpu使用率,剩余内存和硬盘容量
1.内存信息
在proc/meminfo下有具体的内存使用情况,我这里获取的内存信息就是从这个文件中获取的.获取到具体的内存信息后依据我自己的需求,从bufferdreader中单独抽取出来了剩余的内存容量.
<span style="font-family:Microsoft YaHei;font-size:14px;"> Runtime runtime = Runtime.getRuntime();
Process p;
try {
p = runtime.exec(CMD_MEM);
} catch (IOException e) {
Log.e("CameraActivity", "run cmd("+CMD_MEM+") failed:" + e.getMessage());
return null;
}
InputStreamReader reader = new InputStreamReader(p.getInputStream());
BufferedReader buf = new BufferedReader(reader);</span>
2.磁盘信息
使用Android.os下的StatFs来获取文件系统状态和一些磁盘信息.
<span style="font-family:Microsoft YaHei;font-size:14px;"> File root = Environment.getRootDirectory();
StatFs sf = new StatFs(root.getPath());
long blockSize = sf.getBlockSize();
long availCount = sf.getAvailableBlocks();
return (availCount * blockSize) / 1024 / 1024 + "MB";</span>
3.CPU使用率,和当前进程的CPU占有率
3.1 CPU总使用率
在proc/stat下有具体的CPU使用情况.具体格式例如以下:
CPU 152342 1421 28562 1600830 12389 553 273 0 0
CPU后面的几位数字各自是
user 从系统启动開始累计到当前时刻。处于用户态的执行时间,不包括 nice值为负进程。
nice 从系统启动開始累计到当前时刻,nice值为负的进程所占用的CPU时间
system 从系统启动開始累计到当前时刻,处于核心态的执行时间
idle
从系统启动開始累计到当前时刻,除IO等待时间以外的其他等待时间
iowait 从系统启动開始累计到当前时刻。IO等待时间
irq 从系统启动開始累计到当前时刻,硬中断时间
softirq 从系统启动開始累计到当前时刻。软中断时间
所以totalCpuTime这个7个属性的和.
CPU总数用率的算法是:100*((totalCpuTimeS-totalCpuTimeF) -(idelS-idelF))/ (totalCpuTimeS-totalCpuTim
eF)
3.2 当前进程的CPU使用率
/proc/pid/stat下则是该pid的CPU使用情况.具体格式例如以下:
2341 (cn.jesse.camera) S 1131 1131 0 0 -1 3912246 12450 0 2 0
3321 612 0 0 20 0
当中淡红色的四位数字各自是:
utime 该任务在用户执行状态的时间
stime 该任务在核心执行的时间
cutime 全部已死线程在用户状态执行状态的时间
cstime 全部已死线程在核心的执行时间
所以processCpuTime为这个四个属性的和.
当前进行所占CPU的算法是:100*(processCpuTimeS-processCpuTimeF)/(totalCpuTimeS-totalCpuTimeF)
<span style="font-family:Microsoft YaHei;font-size:14px;"> String[] cpuInfos = null;
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream("/proc/stat")), 1000);
String load = reader.readLine();
reader.close();
cpuInfos = load.split(" ");
}catch(IOException ex){
Log.e(TAG, "IOException" + ex.toString());
return 0;
}
long totalCpu = 0;
try{
totalCpu = Long.parseLong(cpuInfos[2])
+ Long.parseLong(cpuInfos[3]) + Long.parseLong(cpuInfos[4])
+ Long.parseLong(cpuInfos[6]) + Long.parseLong(cpuInfos[5])
+ Long.parseLong(cpuInfos[7]) + Long.parseLong(cpuInfos[8]);
}catch(ArrayIndexOutOfBoundsException e){
Log.i(TAG, "ArrayIndexOutOfBoundsException" + e.toString());
return 0;
}</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"> String[] cpuInfos = null;
try{
int pid = android.os.Process.myPid();
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream("/proc/" + pid + "/stat")), 1000);
String load = reader.readLine();
reader.close();
cpuInfos = load.split(" ");
}catch(IOException e){
Log.e(TAG, "IOException" + e.toString());
return 0;
}
long appCpuTime = 0;
try{
appCpuTime = Long.parseLong(cpuInfos[13])
+ Long.parseLong(cpuInfos[14]) + Long.parseLong(cpuInfos[15])
+ Long.parseLong(cpuInfos[16]);
}catch(ArrayIndexOutOfBoundsException e){
Log.i(TAG, "ArrayIndexOutOfBoundsException" + e.toString());
return 0;
}</span>
Android获取cpu使用率,剩余内存和硬盘容量的更多相关文章
- Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等
#include "resource_minitor.h" #include "sys/statfs.h" resource_minitor::resource ...
- 简单获取cpu使用率,以及后台运行的问题
做了一个运维平台,有一个功能定时执行一个脚本,获取cpu使用率和内存使用情况到监控平台. 获取cpu使用率使用的是top中的信息.直接运行没有问题.通过nohup xxx.sh & 之后获取不 ...
- [No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)
github地址:https://github.com/charygao/SmsComputerMonitor 软件用于实时监控当前系统资源等情况,并调用接口,当资源被超额占用时,发送警报到个人手机: ...
- Android获取cpu和内存信息、网址的代码
android获取手机cpu并判断是单核还是多核 /** * Gets the number of cores available in this device, across all proce ...
- C# 获取Windows系统:Cpu使用率,内存使用率,Mac地址,磁盘使用率
一.获取CPU使用率: #region 获取CPU使用率 #region AIP声明 [DllImport("IpHlpApi.dll")] ...
- 使用python函数持续监控电脑cpu使用率、内存、c盘使用率等
方法一: # import time 导入time模块 # import psutil 导入psutil模块 # def func(): # while True: ------->持续监控得w ...
- linux下实现CPU使用率和内存使用率获取方法
想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了. 方法就是读取proc下的文件来获取了. cpu使用率: /proc/stat ,内存使用情况: /p ...
- 获取Windows操作系统的CPU使用率以及内存使用率
此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...
- Golang利用第三方包获取本机cpu使用率以及内存使用情况
第三方包下载 $ github.com/shirou/gopsutil 获取内存方面的信息 package main import ( "fmt" "github.com ...
随机推荐
- 559. N叉树的最大深度
给定一个 N 叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数. 例如,给定一个 3叉树 : 我们应返回其最大深度,3. 说明: 树的深度不会超过 1000. 树的节点 ...
- python 异步 select pooll epoll
概念: 首先列一下,sellect.poll.epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当se ...
- prim 算法和 kruskal算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
- 我的sublime text3 配置文件设置
{ "ignored_packages": [ "Vintage" ], //vim模式 "line_padding_bottom": 2, ...
- kotlin 类 接口 抽象类 子类类型有限的class 。sealed class
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 用 private 封装,可以防止别人修改. 就好像 内有高压,危险,不让碰.
- Stirling数,Bell数,Catalan数,Bernoulli数
组合数学的实质还是DP,但是从通式角度处理的话有利于FFT等的实现. 首先推荐$Candy?$的球划分问题集合: http://www.cnblogs.com/candy99/p/6400735.ht ...
- 2017-2018-1 JAVA实验站 第四、五周作业
2017-2018-1 JAVA实验站 第四.五周作业 JAVA实验站小组成员 学号 名字 职务 20162318 张泰毓 组长 20162303 石亚鑫 组员 20162304 张浩林 组员 201 ...
- bzoj 1051 强连通分量
反建图,计算强连通分量,将每个分量看成一个点,缩点后的图是一个DAG,如果是一棵树,则根代表的连通分量的大小就是答案,否则答案为0. 收获: 图的东西如果不好解决,可以尝试缩点(有向图将每个强连通分量 ...
- 【Python笔记】十分钟搞定pandas
本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook .习惯 ...
- 点广告获取一些BTC(比特币)的网站
免费获取比特币:http://freebtc.qiniudn.com/freebtc.html free btc:http://freebtc.qiniudn.com/freebtc.html ...