Merge "Ensure notification visibility on stopForeground(false)" into sc-dev am: 2591e466c1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15288334 Change-Id: I22f9d2141fcc2d286cc8f1206752b27c7cdd1c52
This commit is contained in:
@@ -1934,6 +1934,28 @@ public final class ActiveServices {
|
||||
if (smap != null) {
|
||||
decActiveForegroundAppLocked(smap, r);
|
||||
}
|
||||
|
||||
// Adjust notification handling before setting isForeground to false, because
|
||||
// that state is relevant to the notification policy side.
|
||||
// Leave the time-to-display as already set: re-entering foreground mode will
|
||||
// only resume the previous quiet timeout, or will display immediately if the
|
||||
// deferral period had already passed.
|
||||
if ((flags & Service.STOP_FOREGROUND_REMOVE) != 0) {
|
||||
cancelForegroundNotificationLocked(r);
|
||||
r.foregroundId = 0;
|
||||
r.foregroundNoti = null;
|
||||
} else if (r.appInfo.targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
// if it's been deferred, force to visibility
|
||||
if (!r.mFgsNotificationShown) {
|
||||
r.postNotification();
|
||||
}
|
||||
dropFgsNotificationStateLocked(r);
|
||||
if ((flags & Service.STOP_FOREGROUND_DETACH) != 0) {
|
||||
r.foregroundId = 0;
|
||||
r.foregroundNoti = null;
|
||||
}
|
||||
}
|
||||
|
||||
r.isForeground = false;
|
||||
r.mFgsExitTime = SystemClock.uptimeMillis();
|
||||
ServiceState stracker = r.getTracker();
|
||||
@@ -1957,20 +1979,6 @@ public final class ActiveServices {
|
||||
updateServiceForegroundLocked(r.app.mServices, true);
|
||||
}
|
||||
}
|
||||
// Leave the time-to-display as already set: re-entering foreground mode will
|
||||
// only resume the previous quiet timeout, or will display immediately if the
|
||||
// deferral period had already passed.
|
||||
if ((flags & Service.STOP_FOREGROUND_REMOVE) != 0) {
|
||||
cancelForegroundNotificationLocked(r);
|
||||
r.foregroundId = 0;
|
||||
r.foregroundNoti = null;
|
||||
} else if (r.appInfo.targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
dropFgsNotificationStateLocked(r);
|
||||
if ((flags & Service.STOP_FOREGROUND_DETACH) != 0) {
|
||||
r.foregroundId = 0;
|
||||
r.foregroundNoti = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user