安卓学习笔记之读取内存信息
来源:互联网 发布:安卓网络抓包工具 编辑:程序博客网 时间:2024/05/02 03:04
安卓学习笔记之读取内存信息
- 通过context.getSystemService(Context.ACTIVITY_SERVICE)获得ActivityManager对象
- 通过ActivityManager对象获得相关信息
获取正在运行的app个数
/** * 获取正在运行的app个数 * @return */ public static int getRunningAppCount(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int count = am.getRunningAppProcesses().size(); return count; }
获取手机可用内存信息 单位是bit
/** * 获取手机可用内存信息 单位是bit * @param context */ public static long getFreeMemoryInfo(Context context){ ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); MemoryInfo outInfo = new MemoryInfo(); am.getMemoryInfo(outInfo ); long availMem = outInfo.availMem;// long totalMem = outInfo.totalMem; //低版本手机不可用 return availMem; }
获取总的可用内存 单位是bit
从/proc/meminfo目录中读取信息
MemTotal: 1031016 kB
MemFree: 13548 kB
MemShared: 0 kB
Buffers: 98064 kB
Cached: 692320 kB
SwapCached: 2244 kB
Active: 563112 kB
Inact_dirty: 309584 kB
Inact_clean: 79508 kB
Inact_target: 190440 kB
HighTotal: 130992 kB
HighFree: 1876 kB
LowTotal: 900024 kB
LowFree: 11672 kB
SwapTotal: 1052248 kB
SwapFree: 1043908 kB
Committed_AS: 332340 kB
/** * 获取总的可用内存 单位是bit * @return */ public static long getTotalMemoryInfo() { File file = new File("/proc/meminfo"); BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(new FileInputStream(file))); String buff; while ((buff = br.readLine()) != null) { if (buff.startsWith("MemTotal")) { String[] s = buff.split(" +"); return Long.parseLong(s[1])*1024; // 获得的buff单位是kb 故要乘以1024转成b } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } return 0; }
获取正在运行的应用信息
public static List<AppInfo> getRunningAppInfos(Context context) { List<AppInfo> runningAppInfos = new ArrayList<AppInfo>(); ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> infos =am.getRunningAppProcesses(); for (RunningAppProcessInfo runningAppProcessInfo : infos) { String processName = runningAppProcessInfo.processName; //获取应用占用内存信息 这个里面一共只有一个数据 android.os.Debug.MemoryInfo[] mem = am.getProcessMemoryInfo(new int[]{runningAppProcessInfo.pid});// Log.e("------>", mem[0]+"----"); // 占用的内存 int memorySize = mem[0].getTotalPrivateDirty() * 1024; //单位kb 需乘以1024 PackageManager pm = context.getPackageManager(); try { ApplicationInfo appInfo = pm.getApplicationInfo(processName,0); String packageName = appInfo.packageName; String appName = (String) appInfo.loadLabel(pm); Drawable icon = appInfo.loadIcon(pm); boolean isUserApp = (appInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0?true:false; AppInfo info = new AppInfo(appName, packageName, icon, isUserApp, memorySize);// Log.e("-------->", "appName:"+appName+"packageName:"+packageName+"memorySize:"+memorySize); runningAppInfos.add(info); } catch (NameNotFoundException e) { e.printStackTrace(); } } return runningAppInfos; }
判断服务是否在后台运行
/** * 判断服务是否在后台运行 * @param context * @param serviceName * @return */ public static boolean isRunning(Context context, String serviceName) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningServiceInfo> infos = activityManager.getRunningServices(100); // 获取最多100条运行的服务 for (RunningServiceInfo runningServiceInfo : infos) { String currentService = runningServiceInfo.service.getClassName(); if (serviceName.equals(currentService)) { //存在当前service return true; }// System.out.println(runningServiceInfo.service.getClassName()); } return false; }
AppInfo类
package com.yu.bean;import android.R.drawable;import android.graphics.drawable.Drawable;public class AppInfo { /** * 应用名字 */ private String appName; /** * 应用包名 */ private String packageName; /** * 包内的className */ private String className; /** * 应用大小 */ private String appSize; /** * 应用图标 */ private Drawable icon; /** * 应用存放位置 */ private String location; /** * 文件目录 */ private String sourceDir; /** * 是否为用户应用 是则为true */ private boolean isUserApp; /** * 占用内存大小 */ private int memorySize; /** * 是否选中 */ private boolean isChecked; public AppInfo(String appName, String packageName, String className, String appSize, Drawable icon, String location, String sourceDir, boolean isUserApp) { super(); this.appName = appName; this.packageName = packageName; this.className = className; this.appSize = appSize; this.icon = icon; this.location = location; this.sourceDir = sourceDir; this.isUserApp = isUserApp; } public AppInfo(String appName, String packageName, Drawable icon, boolean isUserApp, int memorySize) { super(); this.appName = appName; this.packageName = packageName; this.icon = icon; this.isUserApp = isUserApp; this.memorySize = memorySize; } public boolean isChecked() { return isChecked; } public void setChecked(boolean isChecked) { this.isChecked = isChecked; } public int getMemorySize() { return memorySize; } public void setMemorySize(int memorySize) { this.memorySize = memorySize; } public String getAppName() { return appName; } public void setAppName(String appName) { this.appName = appName; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getAppSize() { return appSize; } public void setAppSize(String appSize) { this.appSize = appSize; } public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this.icon = icon; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public String getSourceDir() { return sourceDir; } public void setSourceDir(String sourceDir) { this.sourceDir = sourceDir; } public boolean isUserApp() { return isUserApp; } public void setUserApp(boolean isUserApp) { this.isUserApp = isUserApp; } @Override public String toString() { return "AppInfo [appName=" + appName + ", packageName=" + packageName + ", className=" + className + ", appSize=" + appSize + ", icon=" + icon + ", location=" + location + ", sourceDir=" + sourceDir + ", isUserApp=" + isUserApp + "]"; }}
0 0
- 安卓学习笔记之读取内存信息
- 安卓读取通讯录信息
- 安卓学习之控件学习笔记
- 安卓学习笔记---Android APP内存优化之图片优化
- 安卓笔记之读取联系人和写入联系人
- 安卓之路-学习笔记1
- 安卓之路-学习笔记2
- 安卓之路-学习笔记3
- 安卓学习笔记之布局
- 安卓学习笔记之SimpleAdapter
- 安卓学习笔记之SQLite数据库
- 安卓学习笔记之调试
- 安卓学习笔记之二
- 安卓学习笔记之三
- 安卓学习笔记之selector
- 安卓学习笔记之activity生命周期
- 安卓学习笔记之ViewPager
- 安卓学习笔记之骚扰拦截
- 选择cocos2d-js的原因,摘录了官网的一些东西
- [查异常网]-20160401-清除代码异味
- POJ 3544
- LAMPP Run PHP
- Android MTK 锁屏图片和背景墙纸的修改
- 安卓学习笔记之读取内存信息
- fread函数详解
- 学习python单元测试框架nose之---06nose的插件编写扩展功能
- Python:正则表达式模块
- c++上机作业
- [查异常网]-20160401-为什么你应该尝试全栈
- 初入VE设计#1初识MVC框架和VE设计、主类的创建
- poj 3696 The Luckiest number (数论-快速幂+欧拉定理)
- TL-WN725N 安装问题