android:如何以编程方式获取给定PID的内存使用量(ram)

时间:2013-04-05 07:38:50

标签: android

我想以给定的时间率记录给定应用程序的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启动器

1 个答案:

答案 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并查询内存信息,则可以使用时间戳计算内存使用情况。