Merge "Follow-on for #10671878: Proc stats needs to remove old data structures" into klp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d90ff6772b
@@ -78,7 +78,6 @@ public final class ProcStatsEntry implements Parcelable {
|
||||
mBestTargetPackage = null;
|
||||
if (mUnique) {
|
||||
mBestTargetPackage = mPackage;
|
||||
addServices(stats.getPackageStateLocked(mPackage, mUid));
|
||||
} else {
|
||||
// See if there is one significant package that was running here.
|
||||
ArrayList<ProcStatsEntry> subProcs = new ArrayList<ProcStatsEntry>();
|
||||
@@ -90,18 +89,13 @@ public final class ProcStatsEntry implements Parcelable {
|
||||
continue;
|
||||
}
|
||||
ProcessStats.PackageState pkgState = uids.valueAt(iu);
|
||||
boolean match = false;
|
||||
for (int iproc=0, NPROC=pkgState.mProcesses.size(); iproc<NPROC; iproc++) {
|
||||
ProcessStats.ProcessState subProc =
|
||||
pkgState.mProcesses.valueAt(iproc);
|
||||
if (subProc.mName.equals(mName)) {
|
||||
match = true;
|
||||
subProcs.add(new ProcStatsEntry(subProc, totals));
|
||||
}
|
||||
}
|
||||
if (match) {
|
||||
addServices(stats.getPackageStateLocked(mPackage, mUid));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (subProcs.size() > 1) {
|
||||
@@ -173,12 +167,8 @@ public final class ProcStatsEntry implements Parcelable {
|
||||
}
|
||||
}
|
||||
|
||||
public void addServices(ProcessStats.PackageState pkgState) {
|
||||
for (int isvc=0, NSVC=pkgState.mServices.size(); isvc<NSVC; isvc++) {
|
||||
ProcessStats.ServiceState svc = pkgState.mServices.valueAt(isvc);
|
||||
// XXX can't tell what process it is in!
|
||||
mServices.add(new Service(svc));
|
||||
}
|
||||
public void addService(ProcessStats.ServiceState svc) {
|
||||
mServices.add(new Service(svc));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -213,32 +203,22 @@ public final class ProcStatsEntry implements Parcelable {
|
||||
public static final class Service implements Parcelable {
|
||||
final String mPackage;
|
||||
final String mName;
|
||||
final String mProcess;
|
||||
final long mDuration;
|
||||
|
||||
public Service(ProcessStats.ServiceState service) {
|
||||
mPackage = service.mPackage;
|
||||
mName = service.mName;
|
||||
long startDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
||||
ProcessStats.ServiceState.SERVICE_STARTED,
|
||||
mProcess = service.mProcessName;
|
||||
mDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
||||
ProcessStats.ServiceState.SERVICE_RUN,
|
||||
ProcessStats.STATE_NOTHING, 0, 0);
|
||||
long bindDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
||||
ProcessStats.ServiceState.SERVICE_BOUND,
|
||||
ProcessStats.STATE_NOTHING, 0, 0);
|
||||
long execDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
||||
ProcessStats.ServiceState.SERVICE_EXEC,
|
||||
ProcessStats.STATE_NOTHING, 0, 0);
|
||||
if (bindDuration > startDuration) {
|
||||
startDuration = bindDuration;
|
||||
}
|
||||
if (execDuration > startDuration) {
|
||||
startDuration = execDuration;
|
||||
}
|
||||
mDuration = startDuration;
|
||||
}
|
||||
|
||||
public Service(Parcel in) {
|
||||
mPackage = in.readString();
|
||||
mName = in.readString();
|
||||
mProcess = in.readString();
|
||||
mDuration = in.readLong();
|
||||
}
|
||||
|
||||
@@ -251,6 +231,7 @@ public final class ProcStatsEntry implements Parcelable {
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeString(mPackage);
|
||||
dest.writeString(mName);
|
||||
dest.writeString(mProcess);
|
||||
dest.writeLong(mDuration);
|
||||
}
|
||||
|
||||
|
@@ -30,6 +30,7 @@ import android.preference.PreferenceActivity;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.preference.PreferenceGroup;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
import android.util.TimeUtils;
|
||||
@@ -245,10 +246,14 @@ public class ProcessStatsUi extends PreferenceFragment {
|
||||
}
|
||||
*/
|
||||
|
||||
ArrayMap<String, ProcStatsEntry> processes = new ArrayMap<String, ProcStatsEntry>(
|
||||
mStats.mProcesses.getMap().size());
|
||||
for (int ip=0, N=mStats.mProcesses.getMap().size(); ip<N; ip++) {
|
||||
SparseArray<ProcessStats.ProcessState> uids = mStats.mProcesses.getMap().valueAt(ip);
|
||||
for (int iu=0; iu<uids.size(); iu++) {
|
||||
procs.add(new ProcStatsEntry(uids.valueAt(iu), totals));
|
||||
ProcStatsEntry ent = new ProcStatsEntry(uids.valueAt(iu), totals);
|
||||
procs.add(ent);
|
||||
processes.put(ent.mName, ent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,6 +288,21 @@ public class ProcessStatsUi extends PreferenceFragment {
|
||||
mAppListGroup.addPreference(pref);
|
||||
if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) break;
|
||||
}
|
||||
|
||||
// Add in service info.
|
||||
for (int ip=0, N=mStats.mPackages.getMap().size(); ip<N; ip++) {
|
||||
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 = processes.get(ss.mProcessName);
|
||||
ent.addService(ss);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void load() {
|
||||
|
Reference in New Issue
Block a user