diff options
Diffstat (limited to 'src/com/android/settings/applications/ProcessStatsUi.java')
-rw-r--r-- | src/com/android/settings/applications/ProcessStatsUi.java | 87 |
1 files changed, 47 insertions, 40 deletions
diff --git a/src/com/android/settings/applications/ProcessStatsUi.java b/src/com/android/settings/applications/ProcessStatsUi.java index 8322ea3..9deb22d 100644 --- a/src/com/android/settings/applications/ProcessStatsUi.java +++ b/src/com/android/settings/applications/ProcessStatsUi.java @@ -25,7 +25,6 @@ import android.os.ServiceManager; import android.os.SystemClock; import android.os.UserManager; import android.preference.Preference; -import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; @@ -40,6 +39,7 @@ import com.android.internal.app.IProcessStats; import com.android.internal.app.ProcessMap; import com.android.internal.app.ProcessStats; import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settings.fuelgauge.Utils; import java.io.IOException; @@ -192,7 +192,7 @@ public class ProcessStatsUi extends PreferenceFragment args.putBoolean(ProcessStatsDetail.EXTRA_USE_USS, mUseUss); args.putLong(ProcessStatsDetail.EXTRA_MAX_WEIGHT, mMaxWeight); args.putLong(ProcessStatsDetail.EXTRA_TOTAL_TIME, mTotalTime); - ((PreferenceActivity) getActivity()).startPreferencePanel( + ((SettingsActivity) getActivity()).startPreferencePanel( ProcessStatsDetail.class.getName(), args, R.string.details_title, null, null, 0); return super.onPreferenceTreeClick(preferenceScreen, preference); @@ -466,33 +466,36 @@ public class ProcessStatsUi extends PreferenceFragment final ProcessMap<ProcStatsEntry> entriesMap = new ProcessMap<ProcStatsEntry>(); for (int ipkg=0, N=mStats.mPackages.getMap().size(); ipkg<N; ipkg++) { - final SparseArray<ProcessStats.PackageState> pkgUids + final SparseArray<SparseArray<ProcessStats.PackageState>> pkgUids = mStats.mPackages.getMap().valueAt(ipkg); for (int iu=0; iu<pkgUids.size(); iu++) { - final ProcessStats.PackageState st = pkgUids.valueAt(iu); - for (int iproc=0; iproc<st.mProcesses.size(); iproc++) { - final ProcessStats.ProcessState pkgProc = st.mProcesses.valueAt(iproc); - final ProcessStats.ProcessState proc = mStats.mProcesses.get(pkgProc.mName, - pkgProc.mUid); - if (proc == null) { - Log.w(TAG, "No process found for pkg " + st.mPackageName - + "/" + st.mUid + " proc name " + pkgProc.mName); - continue; - } - ProcStatsEntry ent = entriesMap.get(proc.mName, proc.mUid); - if (ent == null) { - ent = new ProcStatsEntry(proc, st.mPackageName, totals, mUseUss, - mStatsType == MENU_TYPE_BACKGROUND); - if (ent.mDuration > 0) { - if (DEBUG) Log.d(TAG, "Adding proc " + proc.mName + "/" - + proc.mUid + ": time=" + makeDuration(ent.mDuration) + " (" - + ((((double)ent.mDuration) / memTotalTime) * 100) + "%)" - + " pss=" + ent.mAvgPss); - entriesMap.put(proc.mName, proc.mUid, ent); - entries.add(ent); + final SparseArray<ProcessStats.PackageState> vpkgs = pkgUids.valueAt(iu); + for (int iv=0; iv<vpkgs.size(); iv++) { + final ProcessStats.PackageState st = vpkgs.valueAt(iv); + for (int iproc=0; iproc<st.mProcesses.size(); iproc++) { + final ProcessStats.ProcessState pkgProc = st.mProcesses.valueAt(iproc); + final ProcessStats.ProcessState proc = mStats.mProcesses.get(pkgProc.mName, + pkgProc.mUid); + if (proc == null) { + Log.w(TAG, "No process found for pkg " + st.mPackageName + + "/" + st.mUid + " proc name " + pkgProc.mName); + continue; + } + ProcStatsEntry ent = entriesMap.get(proc.mName, proc.mUid); + if (ent == null) { + ent = new ProcStatsEntry(proc, st.mPackageName, totals, mUseUss, + mStatsType == MENU_TYPE_BACKGROUND); + if (ent.mDuration > 0) { + if (DEBUG) Log.d(TAG, "Adding proc " + proc.mName + "/" + + proc.mUid + ": time=" + makeDuration(ent.mDuration) + " (" + + ((((double)ent.mDuration) / memTotalTime) * 100) + "%)" + + " pss=" + ent.mAvgPss); + entriesMap.put(proc.mName, proc.mUid, ent); + entries.add(ent); + } + } else { + ent.addPackage(st.mPackageName); } - } else { - ent.addPackage(st.mPackageName); } } } @@ -503,21 +506,25 @@ public class ProcessStatsUi extends PreferenceFragment // Add in service info. if (mStatsType == MENU_TYPE_BACKGROUND) { for (int ip=0, N=mStats.mPackages.getMap().size(); ip<N; ip++) { - SparseArray<ProcessStats.PackageState> uids = mStats.mPackages.getMap().valueAt(ip); + SparseArray<SparseArray<ProcessStats.PackageState>> uids + = mStats.mPackages.getMap().valueAt(ip); for (int iu=0; iu<uids.size(); iu++) { - ProcessStats.PackageState ps = uids.valueAt(iu); - for (int is=0, NS=ps.mServices.size(); is<NS; is++) { - ProcessStats.ServiceState ss = ps.mServices.valueAt(is); - if (ss.mProcessName != null) { - ProcStatsEntry ent = entriesMap.get(ss.mProcessName, uids.keyAt(iu)); - if (ent != null) { - if (DEBUG) Log.d(TAG, "Adding service " + ps.mPackageName - + "/" + ss.mName + "/" + uids.keyAt(iu) + " to proc " - + ss.mProcessName); - ent.addService(ss); - } else { - Log.w(TAG, "No process " + ss.mProcessName + "/" + uids.keyAt(iu) - + " for service " + ss.mName); + SparseArray<ProcessStats.PackageState> vpkgs = uids.valueAt(iu); + for (int iv=0; iv<vpkgs.size(); iv++) { + ProcessStats.PackageState ps = vpkgs.valueAt(iv); + for (int is=0, NS=ps.mServices.size(); is<NS; is++) { + ProcessStats.ServiceState ss = ps.mServices.valueAt(is); + if (ss.mProcessName != null) { + ProcStatsEntry ent = entriesMap.get(ss.mProcessName, uids.keyAt(iu)); + if (ent != null) { + if (DEBUG) Log.d(TAG, "Adding service " + ps.mPackageName + + "/" + ss.mName + "/" + uids.keyAt(iu) + " to proc " + + ss.mProcessName); + ent.addService(ss); + } else { + Log.w(TAG, "No process " + ss.mProcessName + "/" + uids.keyAt(iu) + + " for service " + ss.mName); + } } } } |