diff --git a/src/com/android/launcher3/MemoryTracker.java b/src/com/android/launcher3/MemoryTracker.java index 8595d55bec..87a73f3b5d 100644 --- a/src/com/android/launcher3/MemoryTracker.java +++ b/src/com/android/launcher3/MemoryTracker.java @@ -59,6 +59,7 @@ public class MemoryTracker extends Service { public final LongSparseArray mData = new LongSparseArray(); public final ArrayList mPids = new ArrayList(); private int[] mPidsArray = new int[0]; + private final Object mLock = new Object(); Handler mHandler = new Handler() { @Override @@ -99,48 +100,50 @@ public class MemoryTracker extends Service { } public void startTrackingProcess(int pid, String name) { - final Long lpid = new Long(pid); + synchronized (mLock) { + final Long lpid = new Long(pid); - if (mPids.contains(lpid)) return; + if (mPids.contains(lpid)) return; - mPids.add(lpid); - final int N = mPids.size(); - mPidsArray = new int[N]; - StringBuffer sb = new StringBuffer("Now tracking processes: "); - for (int i=0; i info.max) info.max = info.currentPss; - if (info.currentUss > info.max) info.max = info.currentUss; - // Log.v(TAG, "update: pid " + pid + " pss=" + info.currentPss + " uss=" + info.currentUss); - if (info.currentPss == 0) { - Log.v(TAG, "update: pid " + pid + " has pss=0, it probably died"); - mData.remove(pid); + synchronized (mLock) { + Debug.MemoryInfo[] dinfos = mAm.getProcessMemoryInfo(mPidsArray); + for (int i=0; i info.max) info.max = info.currentPss; + if (info.currentUss > info.max) info.max = info.currentUss; + // Log.v(TAG, "update: pid " + pid + " pss=" + info.currentPss + " uss=" + info.currentUss); + if (info.currentPss == 0) { + Log.v(TAG, "update: pid " + pid + " has pss=0, it probably died"); + mData.remove(pid); + } + } + for (int i=mPids.size()-1; i>=0; i--) { + final long pid = mPids.get(i).intValue(); + if (mData.get(pid) == null) { + mPids.remove(i); + } } } - for (int i=mPids.size()-1; i>=0; i--) { - final long pid = mPids.get(i).intValue(); - if (mData.get(pid) == null) { - mPids.remove(i); - } - } - - // XXX: notify listeners } @Override