summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/AccessibilityManagerService.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/AccessibilityManagerService.java')
-rw-r--r--services/java/com/android/server/AccessibilityManagerService.java23
1 files changed, 16 insertions, 7 deletions
diff --git a/services/java/com/android/server/AccessibilityManagerService.java b/services/java/com/android/server/AccessibilityManagerService.java
index c205fc0..55007ba 100644
--- a/services/java/com/android/server/AccessibilityManagerService.java
+++ b/services/java/com/android/server/AccessibilityManagerService.java
@@ -323,15 +323,22 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
*/
private void notifyAccessibilityServicesDelayedLocked(AccessibilityEvent event,
boolean isDefault) {
- for (int i = 0, count = mServices.size(); i < count; i++) {
- Service service = mServices.get(i);
+ try {
+ for (int i = 0, count = mServices.size(); i < count; i++) {
+ Service service = mServices.get(i);
- if (service.mIsDefault == isDefault) {
- if (canDispathEventLocked(service, event, mHandledFeedbackTypes)) {
- mHandledFeedbackTypes |= service.mFeedbackType;
- notifyAccessibilityServiceDelayedLocked(service, event);
+ if (service.mIsDefault == isDefault) {
+ if (canDispathEventLocked(service, event, mHandledFeedbackTypes)) {
+ mHandledFeedbackTypes |= service.mFeedbackType;
+ notifyAccessibilityServiceDelayedLocked(service, event);
+ }
}
}
+ } catch (IndexOutOfBoundsException oobe) {
+ // An out of bounds exception can happen if services are going away
+ // as the for loop is running. If that happens, just bail because
+ // there are no more services to notify.
+ return;
}
}
@@ -368,6 +375,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
* @param event The event.
*/
private void tryRecycleLocked(AccessibilityEvent event) {
+ if (event == null) {
+ return;
+ }
int eventType = event.getEventType();
List<Service> services = mServices;
@@ -378,7 +388,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
return;
}
}
-
event.recycle();
}