Fix FGS lifetime extender overzealousness

ForegroundServiceLifetimeExtender was always posting MIN_FGS_TIME_MS in
the future to release a notification if it was canceled at any time
before the minimum. Meaning that if a foreground service was started and
then stopped 4.9 seconds later, it woudn't be released until 9.9 seconds
due to always posting 5000ms.

This change takes into consideration the time that a notification has
already been showing.

Fixes: 141688100
Test: atest ForegroundServiceNotificationListenerTest
Change-Id: Ie0403ddb37bb85a602a5ac6ffedcaf4bab2efcbc
This commit is contained in:
Evan Laird
2019-10-02 18:33:49 -04:00
parent 38bbedaebc
commit 7d44291900

View File

@@ -83,7 +83,9 @@ public class ForegroundServiceLifetimeExtender implements NotificationLifetimeEx
}
}
};
mHandler.postDelayed(r, MIN_FGS_TIME_MS);
long delayAmt = MIN_FGS_TIME_MS
- (System.currentTimeMillis() - entry.notification.getPostTime());
mHandler.postDelayed(r, delayAmt);
}
}