From e676ec7cc3441ec44c1f44c8580fd1031e301f4f Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 25 Jul 2017 10:55:08 -0700 Subject: [PATCH] Always report a uid's initial cached state. Also fix some activity manager dumpsys output formatting and respect the -p option for activity starter. Test: bit CtsAppTestCases:ActivityManagerProcessStateTest Change-Id: I579fa1120be1481d9675dfcdf0ae9621f0d65893 --- .../android/server/am/ActivityManagerService.java | 22 +++--- .../java/com/android/server/am/ActivityRecord.java | 6 +- .../com/android/server/am/ActivityStarter.java | 80 ++++++++++++++++------ 3 files changed, 72 insertions(+), 36 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index f6c56ed44f8f..7d88e7cd7a96 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -14978,7 +14978,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } else if ("starter".equals(cmd)) { synchronized (this) { - dumpActivityStarterLocked(pw); + dumpActivityStarterLocked(pw, dumpPackage); } } else if ("recents".equals(cmd) || "r".equals(cmd)) { synchronized (this) { @@ -15213,7 +15213,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } - dumpActivityStarterLocked(pw); + dumpActivityStarterLocked(pw, dumpPackage); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); @@ -15283,7 +15283,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } - dumpActivityStarterLocked(pw); + dumpActivityStarterLocked(pw, dumpPackage); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); @@ -15307,7 +15307,7 @@ public class ActivityManagerService extends IActivityManager.Stub } private void dumpLastANRLocked(PrintWriter pw) { - pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity lastanr)"); + pw.println("ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr)"); if (mLastANRState == null) { pw.println(" "); } else { @@ -15315,9 +15315,9 @@ public class ActivityManagerService extends IActivityManager.Stub } } - private void dumpActivityStarterLocked(PrintWriter pw) { - pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity starter)"); - mActivityStarter.dump(pw, ""); + private void dumpActivityStarterLocked(PrintWriter pw, String dumpPackage) { + pw.println("ACTIVITY MANAGER STARTER (dumpsys activity starter)"); + mActivityStarter.dump(pw, "", dumpPackage); } void dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args, @@ -22818,11 +22818,11 @@ public class ActivityManagerService extends IActivityManager.Stub uidRec.lastBackgroundTime = 0; } final boolean wasCached = uidRec.setProcState - > ActivityManager.PROCESS_STATE_RECEIVER && uidRec.setProcState - != ActivityManager.PROCESS_STATE_NONEXISTENT; + > ActivityManager.PROCESS_STATE_RECEIVER; final boolean isCached = uidRec.curProcState > ActivityManager.PROCESS_STATE_RECEIVER; - if (wasCached != isCached) { + if (wasCached != isCached || + uidRec.setProcState == ActivityManager.PROCESS_STATE_NONEXISTENT) { uidChange |= isCached ? UidRecord.CHANGE_CACHED : UidRecord.CHANGE_UNCACHED; } uidRec.setProcState = uidRec.curProcState; @@ -24071,7 +24071,7 @@ public class ActivityManagerService extends IActivityManager.Stub pw.println(" Reason: " + reason); } pw.println(); - mActivityStarter.dump(pw, " "); + mActivityStarter.dump(pw, " ", null); pw.println(); pw.println("-------------------------------------------------------------------------------"); dumpActivitiesLocked(null /* fd */, pw, null /* args */, 0 /* opti */, diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 410824e01e35..910a555e3c1c 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -428,11 +428,11 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo pw.print("\""); pw.print(" primaryColor="); pw.println(Integer.toHexString(taskDescription.getPrimaryColor())); - pw.print(prefix + " backgroundColor="); + pw.print(prefix); pw.print(" backgroundColor="); pw.println(Integer.toHexString(taskDescription.getBackgroundColor())); - pw.print(prefix + " statusBarColor="); + pw.print(prefix); pw.print(" statusBarColor="); pw.println(Integer.toHexString(taskDescription.getStatusBarColor())); - pw.print(prefix + " navigationBarColor="); + pw.print(prefix); pw.print(" navigationBarColor="); pw.println(Integer.toHexString(taskDescription.getNavigationBarColor())); } if (iconFilename == null && taskDescription.getIcon() != null) { diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index 09315877015d..0684f68e9e18 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -2306,40 +2306,76 @@ class ActivityStarter { return didSomething; } - void dump(PrintWriter pw, String prefix) { - pw.println(prefix + "ActivityStarter:"); + void dump(PrintWriter pw, String prefix, String dumpPackage) { prefix = prefix + " "; - pw.println(prefix + "mCurrentUser=" + mSupervisor.mCurrentUser); - pw.println(prefix + "mLastStartReason=" + mLastStartReason); - pw.println(prefix + "mLastStartActivityTimeMs=" - + DateFormat.getDateTimeInstance().format(new Date(mLastStartActivityTimeMs))); - pw.println(prefix + "mLastStartActivityResult=" + mLastStartActivityResult); + if (dumpPackage != null) { + if ((mLastStartActivityRecord[0] == null || + !dumpPackage.equals(mLastHomeActivityStartRecord[0].packageName)) && + (mLastHomeActivityStartRecord[0] == null || + !dumpPackage.equals(mLastHomeActivityStartRecord[0].packageName)) && + (mStartActivity == null || !dumpPackage.equals(mStartActivity.packageName))) { + pw.print(prefix); + pw.println("(nothing)"); + return; + } + } + + pw.print(prefix); + pw.print("mCurrentUser="); + pw.println(mSupervisor.mCurrentUser); + pw.print(prefix); + pw.print("mLastStartReason="); + pw.println(mLastStartReason); + pw.print(prefix); + pw.print("mLastStartActivityTimeMs="); + pw.println(DateFormat.getDateTimeInstance().format(new Date(mLastStartActivityTimeMs))); + pw.print(prefix); + pw.print("mLastStartActivityResult="); + pw.println(mLastStartActivityResult); ActivityRecord r = mLastStartActivityRecord[0]; if (r != null) { - pw.println(prefix + "mLastStartActivityRecord:"); - r.dump(pw, prefix + " "); + pw.print(prefix); + pw.println("mLastStartActivityRecord:"); + r.dump(pw, prefix + " "); } - pw.println(prefix + "mLastHomeActivityStartResult=" + mLastHomeActivityStartResult); + pw.print(prefix); + pw.print("mLastHomeActivityStartResult="); + pw.println(mLastHomeActivityStartResult); r = mLastHomeActivityStartRecord[0]; if (r != null) { - pw.println(prefix + "mLastHomeActivityStartRecord:"); - r.dump(pw, prefix + " "); + pw.print(prefix); + pw.println("mLastHomeActivityStartRecord:"); + r.dump(pw, prefix + " "); } if (mStartActivity != null) { - pw.println(prefix + "mStartActivity:"); - mStartActivity.dump(pw, prefix + " "); + pw.print(prefix); + pw.println("mStartActivity:"); + mStartActivity.dump(pw, prefix + " "); } if (mIntent != null) { - pw.println(prefix + "mIntent=" + mIntent); + pw.print(prefix); + pw.print("mIntent="); + pw.println(mIntent); } if (mOptions != null) { - pw.println(prefix + "mOptions=" + mOptions); - } - pw.println(prefix + "mLaunchSingleTop=" + mLaunchSingleTop - + " mLaunchSingleInstance=" + mLaunchSingleInstance - + " mLaunchSingleTask=" + mLaunchSingleTask - + " mLaunchFlags=0x" + Integer.toHexString(mLaunchFlags) - + " mDoResume=" + mDoResume + " mAddingToTask=" + mAddingToTask); + pw.print(prefix); + pw.print("mOptions="); + pw.println(mOptions); + } + pw.print(prefix); + pw.print("mLaunchSingleTop="); + pw.print(mLaunchSingleTop); + pw.print(" mLaunchSingleInstance="); + pw.print(mLaunchSingleInstance); + pw.print(" mLaunchSingleTask="); + pw.println(mLaunchSingleTask); + pw.print(prefix); + pw.print("mLaunchFlags=0x"); + pw.print(Integer.toHexString(mLaunchFlags)); + pw.print(" mDoResume="); + pw.print(mDoResume); + pw.print(" mAddingToTask="); + pw.println(mAddingToTask); } } -- 2.11.0