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