Merge "Handle object in thread-safe manner."
This commit is contained in:
committed by
Android (Google) Code Review
commit
c466641630
@@ -233,6 +233,7 @@ public class UsageStatsService extends SystemService implements
|
||||
final SparseArray<ActivityData> mVisibleActivities = new SparseArray();
|
||||
@GuardedBy("mLock")
|
||||
private final SparseArray<LaunchTimeAlarmQueue> mLaunchTimeAlarmQueues = new SparseArray<>();
|
||||
@GuardedBy("mUsageEventListeners") // Don't hold the main lock when calling out
|
||||
private final ArraySet<UsageStatsManagerInternal.UsageEventListener> mUsageEventListeners =
|
||||
new ArraySet<>();
|
||||
private final CopyOnWriteArraySet<UsageStatsManagerInternal.EstimatedLaunchTimeChangedListener>
|
||||
@@ -1189,9 +1190,11 @@ public class UsageStatsService extends SystemService implements
|
||||
service.reportEvent(event);
|
||||
}
|
||||
|
||||
final int size = mUsageEventListeners.size();
|
||||
for (int i = 0; i < size; ++i) {
|
||||
mUsageEventListeners.valueAt(i).onUsageEvent(userId, event);
|
||||
synchronized (mUsageEventListeners) {
|
||||
final int size = mUsageEventListeners.size();
|
||||
for (int i = 0; i < size; ++i) {
|
||||
mUsageEventListeners.valueAt(i).onUsageEvent(userId, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1682,7 +1685,7 @@ public class UsageStatsService extends SystemService implements
|
||||
* Called via the local interface.
|
||||
*/
|
||||
private void registerListener(@NonNull UsageStatsManagerInternal.UsageEventListener listener) {
|
||||
synchronized (mLock) {
|
||||
synchronized (mUsageEventListeners) {
|
||||
mUsageEventListeners.add(listener);
|
||||
}
|
||||
}
|
||||
@@ -1692,7 +1695,7 @@ public class UsageStatsService extends SystemService implements
|
||||
*/
|
||||
private void unregisterListener(
|
||||
@NonNull UsageStatsManagerInternal.UsageEventListener listener) {
|
||||
synchronized (mLock) {
|
||||
synchronized (mUsageEventListeners) {
|
||||
mUsageEventListeners.remove(listener);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user