diff --git a/services/core/java/com/android/server/am/AppFGSTracker.java b/services/core/java/com/android/server/am/AppFGSTracker.java index 5ac5a70ccf74e..075402f108821 100644 --- a/services/core/java/com/android/server/am/AppFGSTracker.java +++ b/services/core/java/com/android/server/am/AppFGSTracker.java @@ -560,20 +560,22 @@ final class AppFGSTracker extends BaseAppStateDurationsTracker(); - } - if (!isActive(i)) { - mEvents[i].add(new BaseTimeEvent(now)); - notifyListenersOnStateChangeIfNecessary(true, now, serviceType); - } - } else { - // Stop this type. - if (mEvents[i] != null && isActive(i)) { - mEvents[i].add(new BaseTimeEvent(now)); - notifyListenersOnStateChangeIfNecessary(false, now, serviceType); + if (i < mEvents.length) { + if ((serviceTypes & serviceType) != 0) { + // Start this type. + if (mEvents[i] == null) { + mEvents[i] = new LinkedList<>(); + } + if (!isActive(i)) { + mEvents[i].add(new BaseTimeEvent(now)); + notifyListenersOnStateChangeIfNecessary(true, now, serviceType); + } + } else { + // Stop this type. + if (mEvents[i] != null && isActive(i)) { + mEvents[i].add(new BaseTimeEvent(now)); + notifyListenersOnStateChangeIfNecessary(false, now, serviceType); + } } } changes &= ~serviceType;