Safe guard the service type in the app fgs tracker.

Bug: 219542109
Test: Manual - start an instant app with FGS.
Change-Id: I1715bf18462c7a02233cfe662be0a74abf6a8bcd
This commit is contained in:
Jing Ji
2022-02-14 17:06:25 -08:00
parent fe0f81e2b8
commit 000b8e8255

View File

@@ -560,20 +560,22 @@ final class AppFGSTracker extends BaseAppStateDurationsTracker<AppFGSPolicy, Pac
int changes = serviceTypes ^ mForegroundServiceTypes;
for (int serviceType = Integer.highestOneBit(changes); serviceType != 0;) {
final int i = foregroundServiceTypeToIndex(serviceType);
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);
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;