Loading core/java/com/android/internal/protolog/ProtoLogGroup.java +12 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,18 @@ public enum ProtoLogGroup implements IProtoLogGroup { Consts.TAG_WM), WM_DEBUG_ADD_REMOVE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_FOCUS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_CONFIGURATION(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_SWITCH(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_CONTAINERS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_FOCUS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_IMMERSIVE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_LOCKTASK(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_STARTING_WINDOW(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_SHOW_TRANSACTIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Loading data/etc/services.core.protolog.json +357 −9 File changed.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/am/ActivityManagerService.java +4 −4 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ import static android.provider.Settings.Global.NETWORK_ACCESS_TIMEOUT_MS; import static android.provider.Settings.Global.WAIT_FOR_DEBUGGER; import static android.text.format.DateUtils.DAY_IN_MILLIS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ANR; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BACKGROUND_CHECK; Loading Loading @@ -117,7 +118,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NA import static com.android.server.am.MemoryStatUtil.hasMemcg; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_SWITCH; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_LOCKTASK; Loading Loading @@ -319,6 +319,7 @@ import com.android.internal.os.IResultReceiver; import com.android.internal.os.ProcessCpuTracker; import com.android.internal.os.TransferPipe; import com.android.internal.os.Zygote; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastPrintWriter; Loading Loading @@ -4946,9 +4947,8 @@ public class ActivityManagerService extends IActivityManager.Stub notifyPackageUse(instr.mClass.getPackageName(), PackageManager.NOTIFY_PACKAGE_USE_INSTRUMENTATION); } if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Binding proc " + processName + " with config " + app.getWindowProcessController().getConfiguration()); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Binding proc %s with config %s", processName, app.getWindowProcessController().getConfiguration()); ApplicationInfo appInfo = instr != null ? instr.mTargetInfo : app.info; app.compat = compatibilityInfoForPackage(appInfo); Loading services/core/java/com/android/server/wm/ActivityRecord.java +60 −75 Original line number Diff line number Diff line Loading @@ -110,9 +110,13 @@ import static android.view.WindowManager.TRANSIT_UNSET; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONTAINERS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS_LIGHT; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_SWITCH; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; import static com.android.server.wm.ActivityRecordProto.ALL_DRAWN; Loading Loading @@ -145,9 +149,6 @@ import static com.android.server.wm.ActivityRecordProto.WINDOW_TOKEN; import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_APP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONTAINERS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_FOCUS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_PAUSE; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RESULTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_SAVED_STATE; Loading Loading @@ -1096,15 +1097,15 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A private void scheduleActivityMovedToDisplay(int displayId, Configuration config) { if (!attachedToProcess()) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.w(TAG, "Can't report activity moved to display - client not running, activityRecord=" + this + ", displayId=" + displayId); ProtoLog.w(WM_DEBUG_SWITCH, "Can't report activity moved " + "to display - client not running, activityRecord=%s, displayId=%d", this, displayId); return; } try { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, "Reporting activity moved to display" + ", activityRecord=" + this + ", displayId=" + displayId + ", config=" + config); ProtoLog.v(WM_DEBUG_SWITCH, "Reporting activity moved to " + "display, activityRecord=%s, displayId=%d, config=%s", this, displayId, config); mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken, MoveToDisplayItem.obtain(displayId, config)); Loading @@ -1115,14 +1116,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A private void scheduleConfigurationChanged(Configuration config) { if (!attachedToProcess()) { if (DEBUG_CONFIGURATION) Slog.w(TAG, "Can't report activity configuration update - client not running" + ", activityRecord=" + this); ProtoLog.w(WM_DEBUG_CONFIGURATION, "Can't report activity configuration " + "update - client not running, activityRecord=%s", this); return; } try { if (DEBUG_CONFIGURATION) Slog.v(TAG, "Sending new config to " + this + ", config: " + config); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Sending new config to %s, " + "config: %s", this, config); mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken, ActivityConfigurationChangeItem.obtain(config)); Loading Loading @@ -1949,10 +1949,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A startingWindow = null; startingDisplayed = false; if (surface == null) { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "startingWindow was set but startingSurface==null, couldn't " + "remove"); ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "startingWindow was set but " + "startingSurface==null, couldn't remove"); return; } } else { Loading @@ -1962,9 +1960,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return; } ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Schedule remove starting %s startingWindow=%s" + " startingView=%s Callers=%s", this, startingWindow, startingSurface, Debug.getCallers(5)); + " startingView=%s Callers=%s", this, startingWindow, startingSurface, Debug.getCallers(5)); // Use the same thread to remove the window as we used to add it, as otherwise we end up Loading Loading @@ -2399,9 +2398,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A */ boolean moveFocusableActivityToTop(String reason) { if (!isFocusable()) { if (DEBUG_FOCUS) { Slog.d(TAG_FOCUS, "moveActivityStackToFront: unfocusable activity=" + this); } ProtoLog.d(WM_DEBUG_FOCUS, "moveActivityStackToFront: unfocusable " + "activity=%s", this); return false; } Loading @@ -2414,15 +2412,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mRootWindowContainer.getTopResumedActivity() == this && getDisplayContent().mFocusedApp == this) { if (DEBUG_FOCUS) { Slog.d(TAG_FOCUS, "moveActivityStackToFront: already on top, activity=" + this); } ProtoLog.d(WM_DEBUG_FOCUS, "moveActivityStackToFront: already on top, " + "activity=%s", this); return !isState(RESUMED); } if (DEBUG_FOCUS) { Slog.d(TAG_FOCUS, "moveActivityStackToFront: activity=" + this); } ProtoLog.d(WM_DEBUG_FOCUS, "moveActivityStackToFront: activity=%s", this); stack.moveToFront(reason, task); // Report top activity change to tracking services and WM Loading Loading @@ -2798,10 +2792,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mRootWindowContainer.resumeFocusedStacksTopActivities(); } if (DEBUG_CONTAINERS) { Slog.d(TAG_CONTAINERS, "destroyIfPossible: r=" + this + " destroy returned removed=" + activityRemoved); } ProtoLog.d(WM_DEBUG_CONTAINERS, "destroyIfPossible: r=%s destroy returned " + "removed=%s", this, activityRemoved); return activityRemoved; } Loading Loading @@ -2935,10 +2927,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A finishActivityResults(Activity.RESULT_CANCELED, null /* resultData */, null /* resultGrants */); makeFinishingLocked(); if (ActivityTaskManagerDebugConfig.DEBUG_ADD_REMOVE) { Slog.i(TAG_ADD_REMOVE, "Removing activity " + this + " from stack, reason=" + reason + ", callers=" + Debug.getCallers(5)); } ProtoLog.i(WM_DEBUG_ADD_REMOVE, "Removing activity %s from stack, reason= %s " + "callers=%s", this, reason, Debug.getCallers(5)); takeFromHistory(); removeTimeouts(); Loading Loading @@ -2978,7 +2969,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A void destroyed(String reason) { removeDestroyTimeout(); if (DEBUG_CONTAINERS) Slog.d(TAG_CONTAINERS, "activityDestroyedLocked: r=" + this); ProtoLog.d(WM_DEBUG_CONTAINERS, "activityDestroyedLocked: r=%s", this); if (!isState(DESTROYING, DESTROYED)) { throw new IllegalStateException( Loading Loading @@ -3179,12 +3170,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A remove = false; } if (remove) { if (ActivityTaskManagerDebugConfig.DEBUG_ADD_REMOVE || DEBUG_CLEANUP) { Slog.i(TAG_ADD_REMOVE, "Removing activity " + this + " hasSavedState=" + mHaveState + " stateNotNeeded=" + stateNotNeeded + " finishing=" + finishing + " state=" + mState + " callers=" + Debug.getCallers(5)); } ProtoLog.i(WM_DEBUG_ADD_REMOVE, "Removing activity %s hasSavedState=%b " + "stateNotNeeded=%s finishing=%b state=%s callers=%s", this, mHaveState, stateNotNeeded, finishing, mState, Debug.getCallers(5)); if (!finishing || (app != null && app.isRemoved())) { Slog.w(TAG, "Force removing " + this + ": app died, no saved state"); EventLogTags.writeWmFinishActivity(mUserId, System.identityHashCode(this), Loading Loading @@ -7007,27 +6995,27 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A boolean ignoreVisibility) { final Task stack = getRootTask(); if (stack.mConfigWillChange) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Skipping config check (will change): " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Skipping config check " + "(will change): %s", this); return true; } // We don't worry about activities that are finishing. if (finishing) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration doesn't matter in finishing " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration doesn't matter " + "in finishing %s", this); stopFreezingScreenLocked(false); return true; } if (!ignoreVisibility && (mState == STOPPING || mState == STOPPED || !shouldBeVisible())) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Skipping config check invisible: " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Skipping config check " + "invisible: %s", this); return true; } if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Ensuring correct configuration: " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Ensuring correct " + "configuration: %s", this); final int newDisplayId = getDisplayId(); final boolean displayChanged = mLastReportedDisplayId != newDisplayId; Loading @@ -7043,8 +7031,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // the combine configurations are equal, but would otherwise differ in the override config mTmpConfig.setTo(mLastReportedConfiguration.getMergedConfiguration()); if (getConfiguration().equals(mTmpConfig) && !forceNewConfig && !displayChanged) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration & display unchanged in " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration & display " + "unchanged in %s", this); return true; } Loading @@ -7064,14 +7052,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // No need to relaunch or schedule new config for activity that hasn't been launched // yet. We do, however, return after applying the config to activity record, so that // it will use it for launch transaction. if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Skipping config check for initializing activity: " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Skipping config check for " + "initializing activity: %s", this); return true; } if (changes == 0 && !forceNewConfig) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration no differences in " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration no differences in %s", this); // There are no significant differences, so we won't relaunch but should still deliver // the new configuration to the client process. if (displayChanged) { Loading @@ -7082,26 +7070,23 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration changes for " + this + ", allChanges=" + Configuration.configurationDiffToString(changes)); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration changes for %s, " + "allChanges=%s", this, Configuration.configurationDiffToString(changes)); // If the activity isn't currently running, just leave the new configuration and it will // pick that up next time it starts. if (!attachedToProcess()) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration doesn't matter not running " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration doesn't matter not running %s", this); stopFreezingScreenLocked(false); forceNewConfig = false; return true; } // Figure out how to handle the changes between the configurations. if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Checking to restart " + info.name + ": changed=0x" + Integer.toHexString(changes) + ", handles=0x" + Integer.toHexString(info.getRealConfigChanged()) + ", mLastReportedConfiguration=" + mLastReportedConfiguration); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Checking to restart %s: changed=0x%s, " + "handles=0x%s, mLastReportedConfiguration=%s", info.name, Integer.toHexString(changes), Integer.toHexString(info.getRealConfigChanged()), mLastReportedConfiguration); if (shouldRelaunchLocked(changes, mTmpConfig) || forceNewConfig) { // Aha, the activity isn't handling the change, so DIE DIE DIE. Loading @@ -7118,20 +7103,20 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mRelaunchReason = RELAUNCH_REASON_NONE; } if (!attachedToProcess()) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is destroying non-running " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Config is destroying non-running %s", this); destroyImmediately("config"); } else if (mState == PAUSING) { // A little annoying: we are waiting for this activity to finish pausing. Let's not // do anything now, but just flag that it needs to be restarted when done pausing. if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is skipping already pausing " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Config is skipping already pausing %s", this); deferRelaunchUntilPaused = true; preserveWindowOnDeferredRelaunch = preserveWindow; return true; } else { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is relaunching " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Config is relaunching %s", this); if (DEBUG_STATES && !mVisibleRequested) { Slog.v(TAG_STATES, "Config is relaunching invisible activity " + this + " called by " + Debug.getCallers(4)); Loading services/core/java/com/android/server/wm/ActivityStarter.java +6 −8 Original line number Diff line number Diff line Loading @@ -56,12 +56,12 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Process.INVALID_UID; import static android.view.Display.DEFAULT_DISPLAY; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityStackSupervisor.DEFER_RESUME; import static com.android.server.wm.ActivityStackSupervisor.ON_TOP; import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityStackSupervisor.TAG_TASKS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_ACTIVITY_STARTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_PERMISSIONS_REVIEW; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RESULTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TASKS; Loading Loading @@ -116,6 +116,7 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.HeavyWeightSwitcherActivity; import com.android.internal.app.IVoiceInteractor; import com.android.internal.protolog.common.ProtoLog; import com.android.server.am.PendingIntentRecord; import com.android.server.pm.InstantAppResolver; import com.android.server.power.ShutdownCheckPoints; Loading Loading @@ -669,10 +670,8 @@ class ActivityStarter { if (stack != null) { stack.mConfigWillChange = globalConfigWillChange; } if (DEBUG_CONFIGURATION) { Slog.v(TAG_CONFIGURATION, "Starting activity when config will change = " + globalConfigWillChange); } ProtoLog.v(WM_DEBUG_CONFIGURATION, "Starting activity when config " + "will change = %b", globalConfigWillChange); final long origId = Binder.clearCallingIdentity(); Loading @@ -695,10 +694,9 @@ class ActivityStarter { if (stack != null) { stack.mConfigWillChange = false; } if (DEBUG_CONFIGURATION) { Slog.v(TAG_CONFIGURATION, ProtoLog.v(WM_DEBUG_CONFIGURATION, "Updating to new configuration after starting activity."); } mService.updateConfigurationLocked(mRequest.globalConfig, null, false); } Loading Loading
core/java/com/android/internal/protolog/ProtoLogGroup.java +12 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,18 @@ public enum ProtoLogGroup implements IProtoLogGroup { Consts.TAG_WM), WM_DEBUG_ADD_REMOVE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_FOCUS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_CONFIGURATION(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_SWITCH(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_CONTAINERS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_FOCUS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_IMMERSIVE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_LOCKTASK(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_STARTING_WINDOW(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_SHOW_TRANSACTIONS(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Loading
data/etc/services.core.protolog.json +357 −9 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/am/ActivityManagerService.java +4 −4 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ import static android.provider.Settings.Global.NETWORK_ACCESS_TIMEOUT_MS; import static android.provider.Settings.Global.WAIT_FOR_DEBUGGER; import static android.text.format.DateUtils.DAY_IN_MILLIS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ANR; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BACKGROUND_CHECK; Loading Loading @@ -117,7 +118,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NA import static com.android.server.am.MemoryStatUtil.hasMemcg; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_SWITCH; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_LOCKTASK; Loading Loading @@ -319,6 +319,7 @@ import com.android.internal.os.IResultReceiver; import com.android.internal.os.ProcessCpuTracker; import com.android.internal.os.TransferPipe; import com.android.internal.os.Zygote; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastPrintWriter; Loading Loading @@ -4946,9 +4947,8 @@ public class ActivityManagerService extends IActivityManager.Stub notifyPackageUse(instr.mClass.getPackageName(), PackageManager.NOTIFY_PACKAGE_USE_INSTRUMENTATION); } if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Binding proc " + processName + " with config " + app.getWindowProcessController().getConfiguration()); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Binding proc %s with config %s", processName, app.getWindowProcessController().getConfiguration()); ApplicationInfo appInfo = instr != null ? instr.mTargetInfo : app.info; app.compat = compatibilityInfoForPackage(appInfo); Loading
services/core/java/com/android/server/wm/ActivityRecord.java +60 −75 Original line number Diff line number Diff line Loading @@ -110,9 +110,13 @@ import static android.view.WindowManager.TRANSIT_UNSET; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ADD_REMOVE; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS_ANIM; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONTAINERS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS_LIGHT; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_SWITCH; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM; import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; import static com.android.server.wm.ActivityRecordProto.ALL_DRAWN; Loading Loading @@ -145,9 +149,6 @@ import static com.android.server.wm.ActivityRecordProto.WINDOW_TOKEN; import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_APP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONTAINERS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_FOCUS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_PAUSE; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RESULTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_SAVED_STATE; Loading Loading @@ -1096,15 +1097,15 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A private void scheduleActivityMovedToDisplay(int displayId, Configuration config) { if (!attachedToProcess()) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.w(TAG, "Can't report activity moved to display - client not running, activityRecord=" + this + ", displayId=" + displayId); ProtoLog.w(WM_DEBUG_SWITCH, "Can't report activity moved " + "to display - client not running, activityRecord=%s, displayId=%d", this, displayId); return; } try { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, "Reporting activity moved to display" + ", activityRecord=" + this + ", displayId=" + displayId + ", config=" + config); ProtoLog.v(WM_DEBUG_SWITCH, "Reporting activity moved to " + "display, activityRecord=%s, displayId=%d, config=%s", this, displayId, config); mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken, MoveToDisplayItem.obtain(displayId, config)); Loading @@ -1115,14 +1116,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A private void scheduleConfigurationChanged(Configuration config) { if (!attachedToProcess()) { if (DEBUG_CONFIGURATION) Slog.w(TAG, "Can't report activity configuration update - client not running" + ", activityRecord=" + this); ProtoLog.w(WM_DEBUG_CONFIGURATION, "Can't report activity configuration " + "update - client not running, activityRecord=%s", this); return; } try { if (DEBUG_CONFIGURATION) Slog.v(TAG, "Sending new config to " + this + ", config: " + config); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Sending new config to %s, " + "config: %s", this, config); mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken, ActivityConfigurationChangeItem.obtain(config)); Loading Loading @@ -1949,10 +1949,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A startingWindow = null; startingDisplayed = false; if (surface == null) { ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "startingWindow was set but startingSurface==null, couldn't " + "remove"); ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "startingWindow was set but " + "startingSurface==null, couldn't remove"); return; } } else { Loading @@ -1962,9 +1960,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return; } ProtoLog.v(WM_DEBUG_STARTING_WINDOW, "Schedule remove starting %s startingWindow=%s" + " startingView=%s Callers=%s", this, startingWindow, startingSurface, Debug.getCallers(5)); + " startingView=%s Callers=%s", this, startingWindow, startingSurface, Debug.getCallers(5)); // Use the same thread to remove the window as we used to add it, as otherwise we end up Loading Loading @@ -2399,9 +2398,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A */ boolean moveFocusableActivityToTop(String reason) { if (!isFocusable()) { if (DEBUG_FOCUS) { Slog.d(TAG_FOCUS, "moveActivityStackToFront: unfocusable activity=" + this); } ProtoLog.d(WM_DEBUG_FOCUS, "moveActivityStackToFront: unfocusable " + "activity=%s", this); return false; } Loading @@ -2414,15 +2412,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mRootWindowContainer.getTopResumedActivity() == this && getDisplayContent().mFocusedApp == this) { if (DEBUG_FOCUS) { Slog.d(TAG_FOCUS, "moveActivityStackToFront: already on top, activity=" + this); } ProtoLog.d(WM_DEBUG_FOCUS, "moveActivityStackToFront: already on top, " + "activity=%s", this); return !isState(RESUMED); } if (DEBUG_FOCUS) { Slog.d(TAG_FOCUS, "moveActivityStackToFront: activity=" + this); } ProtoLog.d(WM_DEBUG_FOCUS, "moveActivityStackToFront: activity=%s", this); stack.moveToFront(reason, task); // Report top activity change to tracking services and WM Loading Loading @@ -2798,10 +2792,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mRootWindowContainer.resumeFocusedStacksTopActivities(); } if (DEBUG_CONTAINERS) { Slog.d(TAG_CONTAINERS, "destroyIfPossible: r=" + this + " destroy returned removed=" + activityRemoved); } ProtoLog.d(WM_DEBUG_CONTAINERS, "destroyIfPossible: r=%s destroy returned " + "removed=%s", this, activityRemoved); return activityRemoved; } Loading Loading @@ -2935,10 +2927,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A finishActivityResults(Activity.RESULT_CANCELED, null /* resultData */, null /* resultGrants */); makeFinishingLocked(); if (ActivityTaskManagerDebugConfig.DEBUG_ADD_REMOVE) { Slog.i(TAG_ADD_REMOVE, "Removing activity " + this + " from stack, reason=" + reason + ", callers=" + Debug.getCallers(5)); } ProtoLog.i(WM_DEBUG_ADD_REMOVE, "Removing activity %s from stack, reason= %s " + "callers=%s", this, reason, Debug.getCallers(5)); takeFromHistory(); removeTimeouts(); Loading Loading @@ -2978,7 +2969,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A void destroyed(String reason) { removeDestroyTimeout(); if (DEBUG_CONTAINERS) Slog.d(TAG_CONTAINERS, "activityDestroyedLocked: r=" + this); ProtoLog.d(WM_DEBUG_CONTAINERS, "activityDestroyedLocked: r=%s", this); if (!isState(DESTROYING, DESTROYED)) { throw new IllegalStateException( Loading Loading @@ -3179,12 +3170,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A remove = false; } if (remove) { if (ActivityTaskManagerDebugConfig.DEBUG_ADD_REMOVE || DEBUG_CLEANUP) { Slog.i(TAG_ADD_REMOVE, "Removing activity " + this + " hasSavedState=" + mHaveState + " stateNotNeeded=" + stateNotNeeded + " finishing=" + finishing + " state=" + mState + " callers=" + Debug.getCallers(5)); } ProtoLog.i(WM_DEBUG_ADD_REMOVE, "Removing activity %s hasSavedState=%b " + "stateNotNeeded=%s finishing=%b state=%s callers=%s", this, mHaveState, stateNotNeeded, finishing, mState, Debug.getCallers(5)); if (!finishing || (app != null && app.isRemoved())) { Slog.w(TAG, "Force removing " + this + ": app died, no saved state"); EventLogTags.writeWmFinishActivity(mUserId, System.identityHashCode(this), Loading Loading @@ -7007,27 +6995,27 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A boolean ignoreVisibility) { final Task stack = getRootTask(); if (stack.mConfigWillChange) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Skipping config check (will change): " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Skipping config check " + "(will change): %s", this); return true; } // We don't worry about activities that are finishing. if (finishing) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration doesn't matter in finishing " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration doesn't matter " + "in finishing %s", this); stopFreezingScreenLocked(false); return true; } if (!ignoreVisibility && (mState == STOPPING || mState == STOPPED || !shouldBeVisible())) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Skipping config check invisible: " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Skipping config check " + "invisible: %s", this); return true; } if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Ensuring correct configuration: " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Ensuring correct " + "configuration: %s", this); final int newDisplayId = getDisplayId(); final boolean displayChanged = mLastReportedDisplayId != newDisplayId; Loading @@ -7043,8 +7031,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // the combine configurations are equal, but would otherwise differ in the override config mTmpConfig.setTo(mLastReportedConfiguration.getMergedConfiguration()); if (getConfiguration().equals(mTmpConfig) && !forceNewConfig && !displayChanged) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration & display unchanged in " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration & display " + "unchanged in %s", this); return true; } Loading @@ -7064,14 +7052,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // No need to relaunch or schedule new config for activity that hasn't been launched // yet. We do, however, return after applying the config to activity record, so that // it will use it for launch transaction. if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Skipping config check for initializing activity: " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Skipping config check for " + "initializing activity: %s", this); return true; } if (changes == 0 && !forceNewConfig) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration no differences in " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration no differences in %s", this); // There are no significant differences, so we won't relaunch but should still deliver // the new configuration to the client process. if (displayChanged) { Loading @@ -7082,26 +7070,23 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration changes for " + this + ", allChanges=" + Configuration.configurationDiffToString(changes)); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration changes for %s, " + "allChanges=%s", this, Configuration.configurationDiffToString(changes)); // If the activity isn't currently running, just leave the new configuration and it will // pick that up next time it starts. if (!attachedToProcess()) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration doesn't matter not running " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Configuration doesn't matter not running %s", this); stopFreezingScreenLocked(false); forceNewConfig = false; return true; } // Figure out how to handle the changes between the configurations. if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Checking to restart " + info.name + ": changed=0x" + Integer.toHexString(changes) + ", handles=0x" + Integer.toHexString(info.getRealConfigChanged()) + ", mLastReportedConfiguration=" + mLastReportedConfiguration); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Checking to restart %s: changed=0x%s, " + "handles=0x%s, mLastReportedConfiguration=%s", info.name, Integer.toHexString(changes), Integer.toHexString(info.getRealConfigChanged()), mLastReportedConfiguration); if (shouldRelaunchLocked(changes, mTmpConfig) || forceNewConfig) { // Aha, the activity isn't handling the change, so DIE DIE DIE. Loading @@ -7118,20 +7103,20 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A mRelaunchReason = RELAUNCH_REASON_NONE; } if (!attachedToProcess()) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is destroying non-running " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Config is destroying non-running %s", this); destroyImmediately("config"); } else if (mState == PAUSING) { // A little annoying: we are waiting for this activity to finish pausing. Let's not // do anything now, but just flag that it needs to be restarted when done pausing. if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is skipping already pausing " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Config is skipping already pausing %s", this); deferRelaunchUntilPaused = true; preserveWindowOnDeferredRelaunch = preserveWindow; return true; } else { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is relaunching " + this); ProtoLog.v(WM_DEBUG_CONFIGURATION, "Config is relaunching %s", this); if (DEBUG_STATES && !mVisibleRequested) { Slog.v(TAG_STATES, "Config is relaunching invisible activity " + this + " called by " + Debug.getCallers(4)); Loading
services/core/java/com/android/server/wm/ActivityStarter.java +6 −8 Original line number Diff line number Diff line Loading @@ -56,12 +56,12 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Process.INVALID_UID; import static android.view.Display.DEFAULT_DISPLAY; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityStackSupervisor.DEFER_RESUME; import static com.android.server.wm.ActivityStackSupervisor.ON_TOP; import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityStackSupervisor.TAG_TASKS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_ACTIVITY_STARTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_PERMISSIONS_REVIEW; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RESULTS; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TASKS; Loading Loading @@ -116,6 +116,7 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.HeavyWeightSwitcherActivity; import com.android.internal.app.IVoiceInteractor; import com.android.internal.protolog.common.ProtoLog; import com.android.server.am.PendingIntentRecord; import com.android.server.pm.InstantAppResolver; import com.android.server.power.ShutdownCheckPoints; Loading Loading @@ -669,10 +670,8 @@ class ActivityStarter { if (stack != null) { stack.mConfigWillChange = globalConfigWillChange; } if (DEBUG_CONFIGURATION) { Slog.v(TAG_CONFIGURATION, "Starting activity when config will change = " + globalConfigWillChange); } ProtoLog.v(WM_DEBUG_CONFIGURATION, "Starting activity when config " + "will change = %b", globalConfigWillChange); final long origId = Binder.clearCallingIdentity(); Loading @@ -695,10 +694,9 @@ class ActivityStarter { if (stack != null) { stack.mConfigWillChange = false; } if (DEBUG_CONFIGURATION) { Slog.v(TAG_CONFIGURATION, ProtoLog.v(WM_DEBUG_CONFIGURATION, "Updating to new configuration after starting activity."); } mService.updateConfigurationLocked(mRequest.globalConfig, null, false); } Loading