Shutdown download executors properly

Otherwise, it can happen that a task in one executor still tries to
submit something to a stopped executor.
This commit is contained in:
ByteHamster 2022-02-08 21:37:34 +01:00
parent 4a135a5f05
commit 86eccb4893
1 changed files with 7 additions and 12 deletions

View File

@ -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) {