Add API to retrieve memory used by running processes.
Change-Id: I9c1935c2ef3c78bd67ec4dfd811a1caaab4514c3
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 4796e49..722c75c 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1137,11 +1137,10 @@
case GET_PROCESS_MEMORY_INFO_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
- int pid = data.readInt();
- Debug.MemoryInfo mi = new Debug.MemoryInfo();
- getProcessMemoryInfo(pid, mi);
+ int[] pids = data.createIntArray();
+ Debug.MemoryInfo[] res = getProcessMemoryInfo(pids);
reply.writeNoException();
- mi.writeToParcel(reply, 0);
+ reply.writeTypedArray(res, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
return true;
}
@@ -2504,17 +2503,18 @@
reply.recycle();
}
- public void getProcessMemoryInfo(int pid, Debug.MemoryInfo outInfo)
+ public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids)
throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
data.writeInterfaceToken(IActivityManager.descriptor);
- data.writeInt(pid);
+ data.writeIntArray(pids);
mRemote.transact(GET_PROCESS_MEMORY_INFO_TRANSACTION, data, reply, 0);
reply.readException();
- outInfo.readFromParcel(reply);
+ Debug.MemoryInfo[] res = reply.createTypedArray(Debug.MemoryInfo.CREATOR);
data.recycle();
reply.recycle();
+ return res;
}
public void killApplicationProcess(String processName, int uid) throws RemoteException {