Further tweak to issue #issue #25371736: Don't include z-ram allocations in Android OS

Make sure the duration shown for z-ram is sane (the maximum of the
other process durations of that app).

Change-Id: I62c46b89f927b2c7c16f5c31f6910419b2bdd130
diff --git a/src/com/android/settings/applications/ProcStatsData.java b/src/com/android/settings/applications/ProcStatsData.java
index efdf158..0cd80e7 100644
--- a/src/com/android/settings/applications/ProcStatsData.java
+++ b/src/com/android/settings/applications/ProcStatsData.java
@@ -201,17 +201,21 @@
         for (int i = pkgEntries.size() - 1; i >= 0 && totalTime > 0; i--) {
             ProcStatsPackageEntry entry = pkgEntries.get(i);
             long pkgRunTime = 0;
+            long maxRunTime = 0;
             for (int j = entry.mEntries.size() - 1; j >= 0; j--) {
                 ProcStatsEntry proc = entry.mEntries.get(j);
                 pkgRunTime += proc.mRunDuration;
+                if (proc.mRunDuration > maxRunTime) {
+                    maxRunTime = proc.mRunDuration;
+                }
             }
             long pkgZRam = (zramMem*pkgRunTime)/totalTime;
             if (pkgZRam > 0) {
                 zramMem -= pkgZRam;
                 totalTime -= pkgRunTime;
                 ProcStatsEntry procEntry = new ProcStatsEntry(entry.mPackage, 0,
-                        mContext.getString(R.string.process_stats_os_zram), memTotalTime,
-                        pkgZRam);
+                        mContext.getString(R.string.process_stats_os_zram), maxRunTime,
+                        pkgZRam, memTotalTime);
                 procEntry.evaluateTargetPackage(mPm, mStats, null, null, sEntryCompare, mUseUss);
                 entry.addEntry(procEntry);
             }
@@ -226,14 +230,14 @@
         if (totalMem.sysMemNativeWeight > 0) {
             osEntry = new ProcStatsEntry(Utils.OS_PKG, 0,
                     mContext.getString(R.string.process_stats_os_native), memTotalTime,
-                    (long) (totalMem.sysMemNativeWeight / memTotalTime));
+                    (long) (totalMem.sysMemNativeWeight / memTotalTime), memTotalTime);
             osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss);
             osPkg.addEntry(osEntry);
         }
         if (totalMem.sysMemKernelWeight > 0) {
             osEntry = new ProcStatsEntry(Utils.OS_PKG, 0,
                     mContext.getString(R.string.process_stats_os_kernel), memTotalTime,
-                    (long) (totalMem.sysMemKernelWeight / memTotalTime));
+                    (long) (totalMem.sysMemKernelWeight / memTotalTime), memTotalTime);
             osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss);
             osPkg.addEntry(osEntry);
         }
@@ -249,7 +253,7 @@
         if (baseCacheRam > 0) {
             osEntry = new ProcStatsEntry(Utils.OS_PKG, 0,
                     mContext.getString(R.string.process_stats_os_cache), memTotalTime,
-                    baseCacheRam / 1024);
+                    baseCacheRam / 1024, memTotalTime);
             osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss);
             osPkg.addEntry(osEntry);
         }
diff --git a/src/com/android/settings/applications/ProcStatsEntry.java b/src/com/android/settings/applications/ProcStatsEntry.java
index 637003c..97a73c4 100644
--- a/src/com/android/settings/applications/ProcStatsEntry.java
+++ b/src/com/android/settings/applications/ProcStatsEntry.java
@@ -72,13 +72,14 @@
                 + " avgpss=" + mAvgBgMem + " weight=" + mBgWeight);
     }
 
-    public ProcStatsEntry(String pkgName, int uid, String procName, long duration, long mem) {
+    public ProcStatsEntry(String pkgName, int uid, String procName, long duration, long mem,
+            long memDuration) {
         mPackage = pkgName;
         mUid = uid;
         mName = procName;
         mBgDuration = mRunDuration = duration;
         mAvgBgMem = mMaxBgMem = mAvgRunMem = mMaxRunMem = mem;
-        mBgWeight = mRunWeight = ((double)duration) * mem;
+        mBgWeight = mRunWeight = ((double)memDuration) * mem;
         if (DEBUG) Log.d(TAG, "New proc entry " + procName + ": dur=" + mBgDuration
                 + " avgpss=" + mAvgBgMem + " weight=" + mBgWeight);
     }