diff options
author | Daniel Sandler <dsandler@android.com> | 2013-06-26 02:39:45 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-06-26 02:39:45 +0000 |
commit | bd5abfba8fb6ccb37ef82d3c1002bab86dab73f9 (patch) | |
tree | eb5758ba7ed84b3b583e12796023329679ce78bf /src/com/android | |
parent | 5ccb418b0913a5ac6d0c5d601c01b1b01b0e7f3c (diff) | |
parent | b61a35b809666bd58695c988106844b54df3ce6b (diff) | |
download | android_packages_apps_Trebuchet-bd5abfba8fb6ccb37ef82d3c1002bab86dab73f9.tar.gz android_packages_apps_Trebuchet-bd5abfba8fb6ccb37ef82d3c1002bab86dab73f9.tar.bz2 android_packages_apps_Trebuchet-bd5abfba8fb6ccb37ef82d3c1002bab86dab73f9.zip |
Merge "Handle pids coming and going in the memory tracker." into jb-ub-gel-agar
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/launcher3/WeightWatcher.java | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/com/android/launcher3/WeightWatcher.java b/src/com/android/launcher3/WeightWatcher.java index 91d79a814..410856a63 100644 --- a/src/com/android/launcher3/WeightWatcher.java +++ b/src/com/android/launcher3/WeightWatcher.java @@ -46,6 +46,13 @@ public class WeightWatcher extends LinearLayout { private static final int MSG_STOP = 2; private static final int MSG_UPDATE = 3; + static int indexOf(int[] a, int x) { + for (int i=0; i<a.length; i++) { + if (a[i] == x) return i; + } + return -1; + } + Handler mHandler = new Handler() { @Override public void handleMessage(Message m) { @@ -57,9 +64,17 @@ public class WeightWatcher extends LinearLayout { mHandler.removeMessages(MSG_UPDATE); break; case MSG_UPDATE: + int[] pids = mMemoryService.getTrackedProcesses(); + final int N = getChildCount(); - for (int i=0; i<N; i++) { - ((ProcessWatcher) getChildAt(i)).update(); + if (pids.length != N) initViews(); + else for (int i=0; i<N; i++) { + ProcessWatcher pw = ((ProcessWatcher) getChildAt(i)); + if (indexOf(pids, pw.getPid()) < 0) { + initViews(); + break; + } + pw.update(); } mHandler.sendEmptyMessageDelayed(MSG_UPDATE, UPDATE_RATE); break; @@ -90,6 +105,7 @@ public class WeightWatcher extends LinearLayout { } public void initViews() { + removeAllViews(); int[] processes = mMemoryService.getTrackedProcesses(); for (int i=0; i<processes.length; i++) { final ProcessWatcher v = new ProcessWatcher(getContext()); @@ -184,6 +200,14 @@ public class WeightWatcher extends LinearLayout { public void setPid(int pid) { mPid = pid; mMemInfo = mMemoryService.getMemInfo(mPid); + if (mMemInfo == null) { + Log.v("WeightWatcher", "Missing info for pid " + mPid + ", removing view: " + this); + initViews(); + } + } + + public int getPid() { + return mPid; } public void update() { |