diff options
author | Po-Chien Hsueh <pchsueh@google.com> | 2020-03-05 09:04:54 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-03-05 09:04:54 +0000 |
commit | 92352fa7c7e6ce65fe0ab6412ab857f272bf8027 (patch) | |
tree | e0929477a28bd257e1d80a8a0c8e284ca3ffb469 | |
parent | c7d6b5705513ba674130657ca6e9e7200a5c29b0 (diff) | |
parent | 7ba4d3945a325a7cab88be79576d490ede87c1a1 (diff) | |
download | base-92352fa7c7e6ce65fe0ab6412ab857f272bf8027.tar.gz |
Merge "Keep error message notification after stop"
-rw-r--r-- | packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java index f36f97ddf610..f80e934cf37c 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java @@ -139,6 +139,7 @@ public class DynamicSystemInstallationService extends Service private long mCurrentPartitionInstalledSize; private boolean mJustCancelledByUser; + private boolean mKeepNotification; // This is for testing only now private boolean mEnableWhenCompleted; @@ -173,8 +174,11 @@ public class DynamicSystemInstallationService extends Service if (cache != null) { cache.flush(); } - // Cancel the persistent notification. - mNM.cancel(NOTIFICATION_ID); + + if (!mKeepNotification) { + // Cancel the persistent notification. + mNM.cancel(NOTIFICATION_ID); + } } @Override @@ -227,9 +231,6 @@ public class DynamicSystemInstallationService extends Service return; } - // if it's not successful, reset the task and stop self. - resetTaskAndStop(); - switch (result) { case RESULT_CANCELLED: postStatus(STATUS_NOT_STARTED, CAUSE_INSTALL_CANCELLED, null); @@ -248,6 +249,9 @@ public class DynamicSystemInstallationService extends Service postStatus(STATUS_NOT_STARTED, CAUSE_ERROR_EXCEPTION, detail); break; } + + // if it's not successful, reset the task and stop self. + resetTaskAndStop(); } private void executeInstallCommand(Intent intent) { @@ -392,10 +396,10 @@ public class DynamicSystemInstallationService extends Service private void resetTaskAndStop() { mInstallTask = null; - stopForeground(true); - - // stop self, but this service is not destroyed yet if it's still bound - stopSelf(); + new Handler().postDelayed(() -> { + stopForeground(STOP_FOREGROUND_DETACH); + stopSelf(); + }, 50); } private void prepareNotification() { @@ -503,6 +507,7 @@ public class DynamicSystemInstallationService extends Service private void postStatus(int status, int cause, Throwable detail) { String statusString; String causeString; + mKeepNotification = false; switch (status) { case STATUS_NOT_STARTED: @@ -531,12 +536,15 @@ public class DynamicSystemInstallationService extends Service break; case CAUSE_ERROR_IO: causeString = "ERROR_IO"; + mKeepNotification = true; break; case CAUSE_ERROR_INVALID_URL: causeString = "ERROR_INVALID_URL"; + mKeepNotification = true; break; case CAUSE_ERROR_EXCEPTION: causeString = "ERROR_EXCEPTION"; + mKeepNotification = true; break; default: causeString = "CAUSE_NOT_SPECIFIED"; |