diff options
| author | 2021-01-21 16:05:00 -0800 | |
|---|---|---|
| committer | 2021-01-22 00:34:24 +0000 | |
| commit | 46edabde790e82411d08239a3f6bf77ac6eabf70 (patch) | |
| tree | b5e1c243bd8c50b61ae56a9bd39f83225e5c79a5 | |
| parent | a648085407a8a975f784d45d0b7fd9ca68c11bf7 (diff) | |
Don't hold AMS lock while calling into USS.
Bug: 177610601
Test: atest android.app.usage.UsageStatsTest
Test: atest android.app.usage.cts.UsageStatsTest
Test: atest UsageStatsDatabaseTest
Change-Id: I0c95e48db2ffc44a12c7000ccd15fd5cfa00ff08
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 39 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/UserController.java | 8 |
2 files changed, 17 insertions, 30 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index aada21dfcc1e..402a8dee0fa5 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -2533,11 +2533,8 @@ public class ActivityManagerService extends IActivityManager.Stub Slog.d(TAG_SWITCH, "updateActivityUsageStats: comp=" + activity + " hash=" + appToken.hashCode() + " event=" + event); } - synchronized (this) { - if (mUsageStatsService != null) { - mUsageStatsService.reportEvent(activity, userId, event, appToken.hashCode(), - taskRoot); - } + if (mUsageStatsService != null) { + mUsageStatsService.reportEvent(activity, userId, event, appToken.hashCode(), taskRoot); } if (mContentCaptureService != null && (event == Event.ACTIVITY_PAUSED || event == Event.ACTIVITY_RESUMED || event == Event.ACTIVITY_STOPPED @@ -2557,10 +2554,8 @@ public class ActivityManagerService extends IActivityManager.Stub Slog.d(TAG_SWITCH, "updateActivityUsageStats: package=" + packageName + " event=" + event); } - synchronized (this) { - if (mUsageStatsService != null) { - mUsageStatsService.reportEvent(packageName, userId, event); - } + if (mUsageStatsService != null) { + mUsageStatsService.reportEvent(packageName, userId, event); } } @@ -2575,12 +2570,10 @@ public class ActivityManagerService extends IActivityManager.Stub Slog.d(TAG_SWITCH, "updateForegroundServiceUsageStats: comp=" + service + " started=" + started); } - synchronized (this) { - if (mUsageStatsService != null) { - mUsageStatsService.reportEvent(service, userId, - started ? UsageEvents.Event.FOREGROUND_SERVICE_START - : UsageEvents.Event.FOREGROUND_SERVICE_STOP, 0, null); - } + if (mUsageStatsService != null) { + mUsageStatsService.reportEvent(service, userId, + started ? UsageEvents.Event.FOREGROUND_SERVICE_START + : UsageEvents.Event.FOREGROUND_SERVICE_STOP, 0, null); } } @@ -6098,7 +6091,7 @@ public class ActivityManagerService extends IActivityManager.Stub return pfd; } - void reportGlobalUsageEventLocked(int event) { + void reportGlobalUsageEvent(int event) { final int currentUserId = mUserController.getCurrentUserId(); mUsageStatsService.reportEvent(Event.DEVICE_EVENT_PACKAGE_NAME, currentUserId, event); int[] profiles = mUserController.getCurrentProfileIds(); @@ -6112,8 +6105,8 @@ public class ActivityManagerService extends IActivityManager.Stub } } - void reportCurWakefulnessUsageEventLocked() { - reportGlobalUsageEventLocked(mWakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE + void reportCurWakefulnessUsageEvent() { + reportGlobalUsageEvent(mWakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE ? UsageEvents.Event.SCREEN_INTERACTIVE : UsageEvents.Event.SCREEN_NON_INTERACTIVE); } @@ -6127,7 +6120,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (wasAwake != isAwake) { // Also update state in a special way for running foreground services UI. mServices.updateScreenStateLocked(isAwake); - reportCurWakefulnessUsageEventLocked(); + reportCurWakefulnessUsageEvent(); mActivityTaskManager.onScreenAwakeChanged(isAwake); mOomAdjProfiler.onWakefulnessChanged(wakefulness); } @@ -16506,11 +16499,9 @@ public class ActivityManagerService extends IActivityManager.Stub } public void reportCurKeyguardUsageEvent(boolean keyguardShowing) { - synchronized(ActivityManagerService.this) { - ActivityManagerService.this.reportGlobalUsageEventLocked(keyguardShowing - ? UsageEvents.Event.KEYGUARD_SHOWN - : UsageEvents.Event.KEYGUARD_HIDDEN); - } + ActivityManagerService.this.reportGlobalUsageEvent(keyguardShowing + ? UsageEvents.Event.KEYGUARD_SHOWN + : UsageEvents.Event.KEYGUARD_HIDDEN); } @Override diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 6d90eaafcf77..9556d804d53d 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -3042,15 +3042,11 @@ class UserController implements Handler.Callback { } void reportGlobalUsageEventLocked(int event) { - synchronized (mService) { - mService.reportGlobalUsageEventLocked(event); - } + mService.reportGlobalUsageEvent(event); } void reportCurWakefulnessUsageEvent() { - synchronized (mService) { - mService.reportCurWakefulnessUsageEventLocked(); - } + mService.reportCurWakefulnessUsageEvent(); } void taskSupervisorRemoveUser(@UserIdInt int userId) { |