summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2022-02-08 21:37:34 +0100
committerByteHamster <info@bytehamster.com>2022-02-08 21:40:43 +0100
commit86eccb4893d35c3f923c6fd6fc7bf00d9c804ed1 (patch)
tree77ed8b40871eaf9132ea7e6597f39be369b12577
parent4a135a5f051fcabc9ae94caf9c0561737e27865f (diff)
downloadantennapod-86eccb4893d35c3f923c6fd6fc7bf00d9c804ed1.zip
Shutdown download executors properly
Otherwise, it can happen that a task in one executor still tries to submit something to a stopped executor.
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java19
1 files changed, 7 insertions, 12 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 982800b1c..1973c626b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -7,7 +7,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
import android.text.TextUtils;
@@ -88,18 +87,11 @@ public class DownloadService extends Service {
private ScheduledFuture<?> downloadPostFuture;
private final ScheduledThreadPoolExecutor notificationUpdateExecutor;
private static DownloaderFactory downloaderFactory = new DefaultDownloaderFactory();
- private final IBinder binder = new LocalBinder();
private ConnectionStateMonitor connectionMonitor;
- private class LocalBinder extends Binder {
- public DownloadService getService() {
- return DownloadService.this;
- }
- }
-
@Override
public IBinder onBind(Intent intent) {
- return binder;
+ return null;
}
public DownloadService() {
@@ -264,9 +256,9 @@ public class DownloadService extends Service {
EventBus.getDefault().postSticky(DownloadEvent.refresh(Collections.emptyList()));
cancelNotificationUpdater();
- downloadHandleExecutor.shutdown();
- downloadEnqueueExecutor.shutdown();
- notificationUpdateExecutor.shutdown();
+ downloadEnqueueExecutor.shutdownNow();
+ downloadHandleExecutor.shutdownNow();
+ notificationUpdateExecutor.shutdownNow();
if (downloadPostFuture != null) {
downloadPostFuture.cancel(true);
}
@@ -401,6 +393,9 @@ public class DownloadService extends Service {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "cancelDownloadReceiver: " + intent.getAction());
+ if (!isRunning) {
+ return;
+ }
if (TextUtils.equals(intent.getAction(), ACTION_CANCEL_DOWNLOAD)) {
String url = intent.getStringExtra(EXTRA_DOWNLOAD_URL);
if (url == null) {