diff options
Diffstat (limited to 'src/com/android/settings/applications/ProcessStatsSummary.java')
-rw-r--r-- | src/com/android/settings/applications/ProcessStatsSummary.java | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/src/com/android/settings/applications/ProcessStatsSummary.java b/src/com/android/settings/applications/ProcessStatsSummary.java new file mode 100644 index 0000000..068cb43 --- /dev/null +++ b/src/com/android/settings/applications/ProcessStatsSummary.java @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.settings.applications; + +import android.content.Context; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; +import android.text.format.Formatter; +import android.widget.TextView; + +import com.android.settings.InstrumentedFragment; +import com.android.settings.R; +import com.android.settings.Utils; +import com.android.settings.applications.ProcStatsData.MemInfo; + +public class ProcessStatsSummary extends ProcessStatsBase implements OnPreferenceClickListener { + + private static final String KEY_STATUS_HEADER = "status_header"; + + private static final String KEY_PERFORMANCE = "performance"; + private static final String KEY_TOTAL_MEMORY = "total_memory"; + private static final String KEY_AVERAGY_USED = "average_used"; + private static final String KEY_FREE = "free"; + private static final String KEY_APP_LIST = "apps_list"; + + private LinearColorBar mColors; + private LayoutPreference mHeader; + private TextView mMemStatus; + + private Preference mPerformance; + private Preference mTotalMemory; + private Preference mAverageUsed; + private Preference mFree; + private Preference mAppListPreference; + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + + addPreferencesFromResource(R.xml.process_stats_summary); + mHeader = (LayoutPreference) findPreference(KEY_STATUS_HEADER); + mMemStatus = (TextView) mHeader.findViewById(R.id.memory_state); + mColors = (LinearColorBar) mHeader.findViewById(R.id.color_bar); + + mPerformance = findPreference(KEY_PERFORMANCE); + mTotalMemory = findPreference(KEY_TOTAL_MEMORY); + mAverageUsed = findPreference(KEY_AVERAGY_USED); + mFree = findPreference(KEY_FREE); + mAppListPreference = findPreference(KEY_APP_LIST); + mAppListPreference.setOnPreferenceClickListener(this); + } + + @Override + public void refreshUi() { + Context context = getContext(); + int memColor = context.getColor(R.color.running_processes_apps_ram); + mColors.setColors(memColor, memColor, context.getColor(R.color.running_processes_free_ram)); + + MemInfo memInfo = mStatsManager.getMemInfo(); + + double usedRam = memInfo.realUsedRam; + double totalRam = memInfo.realTotalRam; + double freeRam = memInfo.realFreeRam; + String usedString = Formatter.formatShortFileSize(context, (long) usedRam); + String totalString = Formatter.formatShortFileSize(context, (long) totalRam); + String freeString = Formatter.formatShortFileSize(context, (long) freeRam); + CharSequence memString; + CharSequence[] memStatesStr = getResources().getTextArray(R.array.ram_states); + int memState = mStatsManager.getMemState(); + if (memState >= 0 && memState < memStatesStr.length - 1) { + memString = memStatesStr[memState]; + } else { + memString = memStatesStr[memStatesStr.length - 1]; + } + mMemStatus.setText(usedString); + float usedRatio = (float)(usedRam / (freeRam + usedRam)); + mColors.setRatios(usedRatio, 0, 1 - usedRatio); + + mPerformance.setSummary(memString); + mTotalMemory.setSummary(totalString); + mAverageUsed.setSummary(Utils.formatPercentage((long) usedRam, (long) totalRam)); + mFree.setSummary(freeString); + String durationString = getString(sDurationLabels[mDurationIndex]); + int numApps = mStatsManager.getEntries().size(); + mAppListPreference.setSummary(getResources().getQuantityString( + R.plurals.memory_usage_apps_summary, numApps, numApps, durationString)); + } + + @Override + protected int getMetricsCategory() { + return InstrumentedFragment.PROCESS_STATS_SUMMARY; + } + + @Override + public boolean onPreferenceClick(Preference preference) { + if (preference == mAppListPreference) { + Bundle args = new Bundle(); + args.putBoolean(ARG_TRANSFER_STATS, true); + args.putInt(ARG_DURATION_INDEX, mDurationIndex); + mStatsManager.xferStats(); + startFragment(this, ProcessStatsUi.class.getName(), R.string.app_memory_use, 0, args); + return true; + } + return false; + } + +} |