diff --git a/src/com/android/settings/applications/ProcStatsPackageEntry.java b/src/com/android/settings/applications/ProcStatsPackageEntry.java index feb11d89202..e056b06bea0 100644 --- a/src/com/android/settings/applications/ProcStatsPackageEntry.java +++ b/src/com/android/settings/applications/ProcStatsPackageEntry.java @@ -90,10 +90,10 @@ public class ProcStatsPackageEntry implements Parcelable { for (int i=0; i < N; i++) { ProcStatsEntry entry = mEntries.get(i); mBgDuration += entry.mBgDuration; - mAvgBgMem += entry.mAvgBgMem * entry.mBgDuration; + mAvgBgMem += entry.mAvgBgMem; mBgWeight += entry.mBgWeight; mRunDuration += entry.mRunDuration; - mAvgRunMem += entry.mAvgRunMem * entry.mRunDuration; + mAvgRunMem += entry.mAvgRunMem; mRunWeight += entry.mRunWeight; // Each entry is generally a process or something similar. Since it is extremely @@ -103,12 +103,8 @@ public class ProcStatsPackageEntry implements Parcelable { mMaxBgMem += entry.mMaxBgMem; mMaxRunMem += entry.mMaxRunMem; } - if (mBgDuration != 0) { - mAvgBgMem = mAvgBgMem * N / mBgDuration; - } - if (mRunDuration != 0) { - mAvgRunMem = mAvgRunMem * N / mRunDuration; - } + mAvgBgMem /= N; + mAvgRunMem /= N; } public void retrieveUiData(Context context, PackageManager pm) { diff --git a/src/com/android/settings/applications/ProcessStatsDetail.java b/src/com/android/settings/applications/ProcessStatsDetail.java index 7035bf0f6b6..3c4fc021937 100644 --- a/src/com/android/settings/applications/ProcessStatsDetail.java +++ b/src/com/android/settings/applications/ProcessStatsDetail.java @@ -86,7 +86,7 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment private LinearColorBar mColorBar; - private float mMaxMemoryUsage; + private double mMaxMemoryUsage; private double mTotalScale; @@ -101,7 +101,7 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment mUseUss = args.getBoolean(EXTRA_USE_USS); mWeightToRam = args.getDouble(EXTRA_WEIGHT_TO_RAM); mTotalTime = args.getLong(EXTRA_TOTAL_TIME); - mMaxMemoryUsage = args.getFloat(EXTRA_MAX_MEMORY_USAGE); + mMaxMemoryUsage = args.getDouble(EXTRA_MAX_MEMORY_USAGE); mTotalScale = args.getDouble(EXTRA_TOTAL_SCALE); mOnePercentTime = mTotalTime/100; @@ -199,16 +199,17 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment // TODO: Find way to share this code with ProcessStatsPreference. boolean statsForeground = mApp.mRunWeight > mApp.mBgWeight; - float mAvgRatio = (statsForeground ? mApp.mAvgRunMem : mApp.mAvgBgMem) / mMaxMemoryUsage; - float mMaxRatio = (statsForeground ? mApp.mMaxRunMem : mApp.mMaxBgMem) / mMaxMemoryUsage - - mAvgRatio; - float mRemainingRatio = 1 - mAvgRatio - mMaxRatio; + float avgRatio = (float) ((statsForeground ? mApp.mRunWeight : mApp.mBgWeight) + * mWeightToRam / mMaxMemoryUsage); + float maxRatio = (float) ((statsForeground ? mApp.mMaxRunMem : mApp.mMaxBgMem) + * mTotalScale * 1024 / mMaxMemoryUsage - avgRatio); + float remainingRatio = 1 - avgRatio - maxRatio; mColorBar = (LinearColorBar) headerLayout.findViewById(R.id.color_bar); Context context = getActivity(); mColorBar.setColors(context.getColor(R.color.memory_avg_use), context.getColor(R.color.memory_max_use), context.getColor(R.color.memory_remaining)); - mColorBar.setRatios(mAvgRatio, mMaxRatio, mRemainingRatio); + mColorBar.setRatios(avgRatio, maxRatio, remainingRatio); } public void onClick(View v) { diff --git a/src/com/android/settings/applications/ProcessStatsPreference.java b/src/com/android/settings/applications/ProcessStatsPreference.java index 239e0d31ae0..ffbc5603ae9 100644 --- a/src/com/android/settings/applications/ProcessStatsPreference.java +++ b/src/com/android/settings/applications/ProcessStatsPreference.java @@ -58,7 +58,8 @@ public class ProcessStatsPreference extends Preference { mRemainingColor = context.getColor(R.color.memory_remaining); } - public void init(ProcStatsPackageEntry entry, PackageManager pm, float maxMemory) { + public void init(ProcStatsPackageEntry entry, PackageManager pm, double maxMemory, + double weightToRam, double totalScale) { mEntry = entry; setTitle(TextUtils.isEmpty(entry.mUiLabel) ? entry.mPackage : entry.mUiLabel); if (entry.mUiTargetApp != null) { @@ -69,8 +70,10 @@ public class ProcessStatsPreference extends Preference { boolean statsForeground = entry.mRunWeight > entry.mBgWeight; setSummary(entry.mRunDuration > entry.mBgDuration ? entry.getRunningFrequency(getContext()) : entry.getBackgroundFrequency(getContext())); - mAvgRatio = (statsForeground ? entry.mAvgRunMem : entry.mAvgBgMem) / maxMemory; - mMaxRatio = (statsForeground ? entry.mMaxRunMem : entry.mMaxBgMem) / maxMemory - mAvgRatio; + mAvgRatio = (float) ((statsForeground ? entry.mRunWeight : entry.mBgWeight) + * weightToRam / maxMemory); + mMaxRatio = (float) ((statsForeground ? entry.mMaxRunMem : entry.mMaxBgMem) + * totalScale * 1024 / maxMemory - mAvgRatio); mRemainingRatio = 1 - mAvgRatio - mMaxRatio; } diff --git a/src/com/android/settings/applications/ProcessStatsUi.java b/src/com/android/settings/applications/ProcessStatsUi.java index fee167a742f..3dc0661bcec 100644 --- a/src/com/android/settings/applications/ProcessStatsUi.java +++ b/src/com/android/settings/applications/ProcessStatsUi.java @@ -74,16 +74,12 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment { = new Comparator() { @Override public int compare(ProcStatsPackageEntry lhs, ProcStatsPackageEntry rhs) { - if (lhs.mRunWeight < rhs.mRunWeight) { - return 1; - } else if (lhs.mRunWeight > rhs.mRunWeight) { - return -1; - } else if (lhs.mRunDuration < rhs.mRunDuration) { - return 1; - } else if (lhs.mRunDuration > rhs.mRunDuration) { - return -1; + double rhsWeight = Math.max(rhs.mRunWeight, rhs.mBgWeight); + double lhsWeight = Math.max(lhs.mRunWeight, lhs.mBgWeight); + if (lhsWeight == rhsWeight) { + return 0; } - return 0; + return lhsWeight < rhsWeight ? 1 : -1; } }; @@ -128,7 +124,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment { }; private ProcStatsData mStatsManager; - private float mMaxMemoryUsage; + private double mMaxMemoryUsage; @Override public void onCreate(Bundle icicle) { @@ -200,7 +196,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment { args.putDouble(ProcessStatsDetail.EXTRA_WEIGHT_TO_RAM, mStatsManager.getMemInfo().weightToRam); args.putLong(ProcessStatsDetail.EXTRA_TOTAL_TIME, memTotalTime); - args.putFloat(ProcessStatsDetail.EXTRA_MAX_MEMORY_USAGE, mMaxMemoryUsage); + args.putDouble(ProcessStatsDetail.EXTRA_MAX_MEMORY_USAGE, mMaxMemoryUsage); args.putDouble(ProcessStatsDetail.EXTRA_TOTAL_SCALE, mStatsManager.getMemInfo().totalScale); ((SettingsActivity) getActivity()).startPreferencePanel( ProcessStatsDetail.class.getName(), args, R.string.details_title, null, null, 0); @@ -422,7 +418,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment { for (int i=0, N=pkgEntries.size(); i mMaxMemoryUsage) { mMaxMemoryUsage = maxMem; } @@ -452,7 +448,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment { ProcStatsPackageEntry pkg = pkgEntries.get(i); ProcessStatsPreference pref = new ProcessStatsPreference(context); pkg.retrieveUiData(context, mPm); - pref.init(pkg, mPm, mMaxMemoryUsage); + pref.init(pkg, mPm, mMaxMemoryUsage, memInfo.weightToRam, memInfo.totalScale); pref.setOrder(i); mAppListGroup.addPreference(pref); if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) {