Add tracing for UserState and a few services.
Both BackupManager and AppWidgetManager internals are taking a long
time to process user unlock events, so add tracing details. Also add
general tracing to show all UserState changes.
Bug: 32859180
Test: builds, boots
Change-Id: I82f4f7220ccb695941acd6bc45cd67a5fae8a4d2
diff --git a/services/core/java/com/android/server/am/UserState.java b/services/core/java/com/android/server/am/UserState.java
index b89586d..2e27387 100644
--- a/services/core/java/com/android/server/am/UserState.java
+++ b/services/core/java/com/android/server/am/UserState.java
@@ -20,6 +20,7 @@
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import android.app.IStopUserCallback;
+import android.os.Trace;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.Slog;
@@ -81,9 +82,18 @@
if (newState == state) {
return;
}
- Slog.i(TAG, "User " + mHandle.getIdentifier() + " state changed from "
+ final int userId = mHandle.getIdentifier();
+ if (state != STATE_BOOTING) {
+ Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER,
+ stateToString(state) + " " + userId, userId);
+ }
+ if (newState != STATE_SHUTDOWN) {
+ Trace.asyncTraceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
+ stateToString(newState) + " " + userId, userId);
+ }
+ Slog.i(TAG, "User " + userId + " state changed from "
+ stateToString(state) + " to " + stateToString(newState));
- EventLogTags.writeAmUserStateChanged(mHandle.getIdentifier(), newState);
+ EventLogTags.writeAmUserStateChanged(userId, newState);
lastState = state;
state = newState;
}