diff --git a/F-Droid/src/org/fdroid/fdroid/AppDetails.java b/F-Droid/src/org/fdroid/fdroid/AppDetails.java index ee03cb40c..83f903849 100644 --- a/F-Droid/src/org/fdroid/fdroid/AppDetails.java +++ b/F-Droid/src/org/fdroid/fdroid/AppDetails.java @@ -554,7 +554,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A protected void onDestroy() { if (downloadHandler != null) { if (!inProcessOfChangingConfiguration) { - downloadHandler.cancel(); + downloadHandler.cancel(false); cleanUpFinishedDownload(); } } @@ -1517,7 +1517,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A if (activity == null || activity.downloadHandler == null) return; - activity.downloadHandler.cancel(); + activity.downloadHandler.cancel(true); activity.cleanUpFinishedDownload(); setProgressVisible(false); updateViews(); diff --git a/F-Droid/src/org/fdroid/fdroid/net/ApkDownloader.java b/F-Droid/src/org/fdroid/fdroid/net/ApkDownloader.java index 8bc058d2b..0c22313f8 100644 --- a/F-Droid/src/org/fdroid/fdroid/net/ApkDownloader.java +++ b/F-Droid/src/org/fdroid/fdroid/net/ApkDownloader.java @@ -289,11 +289,13 @@ public class ApkDownloader implements AsyncDownloadWrapper.Listener { /** * Attempts to cancel the download (if in progress) and also removes the progress - * listener (to prevent + * listener + * + * @param userRequested - true if the user requested the cancel (via button click), otherwise false. */ - public void cancel() { + public void cancel(boolean userRequested) { if (dlWrapper != null) { - dlWrapper.attemptCancel(); + dlWrapper.attemptCancel(userRequested); } } diff --git a/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloadWrapper.java b/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloadWrapper.java index ef0996ad4..789a8ae18 100644 --- a/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloadWrapper.java +++ b/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloadWrapper.java @@ -47,7 +47,7 @@ public class AsyncDownloadWrapper extends Handler { downloadThread.start(); } - public void attemptCancel() { + public void attemptCancel(boolean userRequested) { if (downloadThread != null) { downloadThread.interrupt(); } diff --git a/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloader.java b/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloader.java index 301e8b347..72c4d2181 100644 --- a/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloader.java +++ b/F-Droid/src/org/fdroid/fdroid/net/AsyncDownloader.java @@ -85,8 +85,12 @@ public class AsyncDownloader extends AsyncDownloadWrapper { } @Override - public void attemptCancel() { - if (downloadId >= 0) dm.remove(downloadId); + public void attemptCancel(boolean userRequested) { + if (userRequested && downloadId >= 0) { + dm.remove(downloadId); + } + + context.unregisterReceiver(downloadReceiver); } // Broadcast receiver to receive broadcasts from the download manager