Merge pull request #4963 from a1291762/develop

Avoid the stuck download notification
This commit is contained in:
ByteHamster 2021-03-01 10:09:28 +01:00 committed by GitHub
commit c4f036c06c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 16 deletions

View File

@ -172,8 +172,7 @@ public class DownloadService extends Service {
setupNotificationUpdaterIfNecessary();
syncExecutor.execute(() -> onDownloadQueued(intent));
} else if (numberOfDownloads.get() == 0) {
stopForeground(true);
stopSelf();
shutdown();
} else {
Log.d(TAG, "onStartCommand: Unknown intent");
}
@ -227,10 +226,6 @@ public class DownloadService extends Service {
}
unregisterReceiver(cancelDownloadReceiver);
stopForeground(true);
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.cancel(R.id.notification_downloading);
// if this was the initial gpodder sync, i.e. we just synced the feeds successfully,
// it is now time to sync the episode actions
SyncService.sync(this);
@ -550,14 +545,7 @@ public class DownloadService extends Service {
if (numberOfDownloads.get() <= 0 && DownloadRequester.getInstance().hasNoDownloads()) {
Log.d(TAG, "Attempting shutdown");
stopForeground(true);
stopSelf();
// Trick to hide the notification more quickly when the service is stopped
// Without this, the second-last update of the notification stays for 3 seconds after onDestroy returns
notificationUpdater.run();
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.cancel(R.id.notification_downloading);
shutdown();
}
}
@ -647,4 +635,14 @@ public class DownloadService extends Service {
new PostDownloaderTask(downloads), 1, 1, TimeUnit.SECONDS);
}
}
private void shutdown() {
// If the service was run for a very short time, the system may delay closing
// the notification. Set the notification text now so that a misleading message
// is not left on the notification.
notificationUpdater.run();
cancelNotificationUpdater();
stopForeground(true);
stopSelf();
}
}

View File

@ -53,7 +53,7 @@ public class DownloadServiceNotification {
String contentTitle = context.getString(R.string.download_notification_title);
String downloadsLeft = (numDownloads > 0)
? context.getResources().getQuantityString(R.plurals.downloads_left, numDownloads, numDownloads)
: context.getString(R.string.downloads_processing);
: context.getString(R.string.service_shutting_down);
String bigText = compileNotificationString(downloads);
notificationCompatBuilder.setContentTitle(contentTitle);

View File

@ -270,7 +270,7 @@
<item quantity="one">%d download left</item>
<item quantity="other">%d downloads left</item>
</plurals>
<string name="downloads_processing">Processing downloads</string>
<string name="service_shutting_down">Service shutting down</string>
<string name="download_notification_title">Downloading podcast data</string>
<plurals name="download_report_content">
<item quantity="one">%d download succeeded, %d failed</item>