我想以给定的时间率记录给定应用程序的ram使用情况。我编写了代码以获取使用的完整内存值,但不知道如何获取给定PID的内存使用情况。
请帮帮我
这是我用来获取内存的代码
ActivityManager localActivityManager = (ActivityManager)getSystemService("activity");
ActivityManager.MemoryInfo localMemoryInfo = new ActivityManager.MemoryInfo();
localActivityManager.getMemoryInfo(localMemoryInfo);
Log.i("",String.valueOf(localMemoryInfo.availMem));
我想我可以使用公共MemoryInfo [] getProcessMemoryInfo(int [] pids)来获取它,但不知道如何为它编码,因为我是一个Android启动器
答案 0 :(得分:2)
ActivityManager localActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); // use Context.ACTIVITY_SERVICE not the literal "activity"
List<ActivityManager.RunningAppProcessInfo> procsInfo = localActivityManager.getRunningAppProcesses();
int[] pids = new int[procsInfo.size()];
for (int i = 0; i < procsInfo.size(); i++) {
ActivityManager.RunningAppProcessInfo info = procsInfo.get(i);
pids[i] = info.pid;
}
Debug.MemoryInfo[] procsMemInfo = localActivityManager.getProcessMemoryInfo(pids);
// now walk the procsMemInfo array
如果您安排定期计时器定期重新查询正在运行的pid并查询内存信息,则可以使用时间戳计算内存使用情况。