Add trace logs for UserController#dispatchUserSwitchComplete.

To track how long it takes for each mUserSwitchObservers to process
IUserSwitchObserver#onUserSwitchComplete call and when that happens.

Bug: 239497256
Test: atest MultiUserPerfTests:android.multiuser.UserLifecycleTests#switchUser_stopped --no-bazel-mode
Change-Id: I9c618b6bb2247d93f624a8f9b9351608d4579000
This commit is contained in:
Yasin Kilicdere
2022-08-02 18:17:58 +01:00
parent fd811417f6
commit 20f950e74d

View File

@@ -1872,15 +1872,21 @@ class UserController implements Handler.Callback {
/** Called on handler thread */
@VisibleForTesting
void dispatchUserSwitchComplete(@UserIdInt int userId) {
final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
t.traceBegin("dispatchUserSwitchComplete-" + userId);
mInjector.getWindowManager().setSwitchingUser(false);
final int observerCount = mUserSwitchObservers.beginBroadcast();
for (int i = 0; i < observerCount; i++) {
try {
t.traceBegin("onUserSwitchComplete-" + userId + " #" + i + " "
+ mUserSwitchObservers.getBroadcastCookie(i));
mUserSwitchObservers.getBroadcastItem(i).onUserSwitchComplete(userId);
t.traceEnd();
} catch (RemoteException e) {
}
}
mUserSwitchObservers.finishBroadcast();
t.traceEnd();
}
private void dispatchLockedBootComplete(@UserIdInt int userId) {