DSUService: stopSelf() only if no ongoing installation

If you are fast and start a DSU installation before the BOOT_COMPLETE
broadcast receiver can start, than the executeNotifyIfInUseCommand()
would destroy the on-going installation session, which is mildly
irritating.

Bug: 165471299
Test: Presubmit
Change-Id: Iaf6a165ece7d2b4a531a78845122046c19d456a7
This commit is contained in:
Yi-Yo Chiang
2021-02-26 19:53:02 +08:00
parent 4cfe6d8f57
commit 5991432043

View File

@@ -394,16 +394,20 @@ public class DynamicSystemInstallationService extends Service
}
private void executeNotifyIfInUseCommand() {
int status = getStatus();
if (status == STATUS_IN_USE) {
startForeground(NOTIFICATION_ID,
buildNotification(STATUS_IN_USE, CAUSE_NOT_SPECIFIED));
} else if (status == STATUS_READY) {
startForeground(NOTIFICATION_ID,
buildNotification(STATUS_READY, CAUSE_NOT_SPECIFIED));
} else {
stopSelf();
switch (getStatus()) {
case STATUS_IN_USE:
startForeground(NOTIFICATION_ID,
buildNotification(STATUS_IN_USE, CAUSE_NOT_SPECIFIED));
break;
case STATUS_READY:
startForeground(NOTIFICATION_ID,
buildNotification(STATUS_READY, CAUSE_NOT_SPECIFIED));
break;
case STATUS_IN_PROGRESS:
break;
case STATUS_NOT_STARTED:
default:
stopSelf();
}
}