Android获取CPU,内存,磁盘使用率
16lz
2021-01-26
现在论坛里越来越多垃圾了,两个小功能都要30分,还是代码搬运工,以前一些大神辛苦封装的都免费,这种垃圾搬运几行代码都要收30分。现在代码我贴出来,大家自己看。
下面看不懂的,这有demo链接
/** * 获取内存可用空间 * @return */ public static String getAvailMemory() {// 获取android当前可用内存大小 ActivityManager am = (ActivityManager) MyApplication.getInstance().getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); am.getMemoryInfo(mi); //mi.availMem; 当前系统的可用内存 return Formatter.formatFileSize(MyApplication.getInstance(), mi.availMem);// 将获取的内存大小规格化 } /** * 获取内存总共空间 * @return */ public static String getTotalMemory() { String str1 = "/proc/meminfo";// 系统内存信息文件 String str2; String[] arrayOfString; long initial_memory = 0; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192); str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小 arrayOfString = str2.split("\\s+"); for (String num : arrayOfString) { Log.e(str2, num + "\t"); } initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte localBufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } return Formatter.formatFileSize(MyApplication.getInstance(), initial_memory);// Byte转换为KB或者MB,内存大小规格化 } /** * 获取cpu使用率 * @return */ public static float getCpuUsed() { try { RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r"); String load = reader.readLine(); String[] toks = load.split(" "); long idle1 = Long.parseLong(toks[5]); long cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4]) + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]); try { Thread.sleep(360); } catch (Exception e) { e.printStackTrace(); } reader.seek(0); load = reader.readLine(); reader.close(); toks = load.split(" "); long idle2 = Long.parseLong(toks[5]); long cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4]) + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]); return (float) (cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1)); } catch (IOException ex) { ex.printStackTrace(); } return 0; } /** * 外部存储是否可用 (存在且具有读写权限) */ public static boolean isExternalStorageAvailable() { return Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); } /** * 获取手机内部可用空间大小 * @return */ static public String getAvailableInternalMemorySize() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return Formatter.formatFileSize(MyApplication.getInstance(),availableBlocks * blockSize); } /** * 获取手机内部空间大小 * @return */ public static String getTotalInternalMemorySize() { File path = Environment.getDataDirectory();//Gets the Android data directory StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); //每个block 占字节数 long totalBlocks = stat.getBlockCount(); //block总数 return Formatter.formatFileSize(MyApplication.getInstance(),totalBlocks * blockSize); } /** * 获取手机外部可用空间大小 * @return */ public static String getAvailableExternalMemorySize() { if (isExternalStorageAvailable()) { StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return Formatter.formatFileSize(MyApplication.getInstance(),availableBlocks * blockSize); } else { return "-1"; } } /** * 获取手机外部总空间大小 * @return */ public static String getTotalExternalMemorySize() { if (isExternalStorageAvailable()) { StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); return Formatter.formatFileSize(MyApplication.getInstance(),totalBlocks * blockSize); } else { return "-1"; } }
更多相关文章
- Android中接口(Interface)的简单使用
- Android命令行查看内存使用情况
- 本来想用“{{”秀一波,结果却导致了内存溢出!
- 使EditText不自动获取焦点(Android中系统输入法不主动弹出)
- Broadcast监听网络状态,ping判断网络是否可用
- Android(安卓)OOM 排查与解决——图片加载优化
- Android(安卓)M 动态权限获取
- Android(安卓)XML shape 标签使用详解(apk瘦身,减少内存好帮手)
- android 判断摄像头是否可用(6.0以下 )