diff options
| author | 2023-11-13 17:49:35 +0000 | |
|---|---|---|
| committer | 2023-11-13 17:49:35 +0000 | |
| commit | 3e91eef808e1efb2cbcbc0d33eace573e831e85c (patch) | |
| tree | 8976dc96abd91c49f33566afb2a06e126a44d04d | |
| parent | 187cf29ffbe478e05d755269adeed6866d24a292 (diff) | |
| parent | 44a6bc037cc704459bfa1d2ae23ad518d49b8377 (diff) | |
Merge "UsageStats: Avoid holding main lock when notifying callbacks" into main
| -rw-r--r-- | services/usage/java/com/android/server/usage/UsageStatsService.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index f64ab22628d9..63de41f80c23 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -206,6 +206,7 @@ public class UsageStatsService extends SystemService implements static final int MSG_NOTIFY_ESTIMATED_LAUNCH_TIMES_CHANGED = 9; static final int MSG_UID_REMOVED = 10; static final int MSG_USER_STARTED = 11; + static final int MSG_NOTIFY_USAGE_EVENT_LISTENER = 12; private final Object mLock = new Object(); private Handler mHandler; @@ -315,6 +316,16 @@ public class UsageStatsService extends SystemService implements Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); return true; } + case MSG_NOTIFY_USAGE_EVENT_LISTENER: { + final int userId = msg.arg1; + final Event event = (Event) msg.obj; + synchronized (mUsageEventListeners) { + final int size = mUsageEventListeners.size(); + for (int i = 0; i < size; ++i) { + mUsageEventListeners.valueAt(i).onUsageEvent(userId, event); + } + } + } } return false; }; @@ -532,9 +543,6 @@ public class UsageStatsService extends SystemService implements } reportEvent(unlockEvent, userId); - mIoHandler.obtainMessage(MSG_HANDLE_LAUNCH_TIME_ON_USER_UNLOCK, - userId, 0).sendToTarget(); - // Remove all the stats stored in system DE. deleteRecursively(new File(Environment.getDataSystemDeDirectory(userId), "usagestats")); @@ -546,6 +554,8 @@ public class UsageStatsService extends SystemService implements userService.persistActiveStats(); } } + + mIoHandler.obtainMessage(MSG_HANDLE_LAUNCH_TIME_ON_USER_UNLOCK, userId, 0).sendToTarget(); } /** @@ -1240,12 +1250,7 @@ public class UsageStatsService extends SystemService implements service.reportEvent(event); } - synchronized (mUsageEventListeners) { - final int size = mUsageEventListeners.size(); - for (int i = 0; i < size; ++i) { - mUsageEventListeners.valueAt(i).onUsageEvent(userId, event); - } - } + mIoHandler.obtainMessage(MSG_NOTIFY_USAGE_EVENT_LISTENER, userId, 0, event).sendToTarget(); } private String getUsageSourcePackage(Event event) { |