From ecc2ddb6e434246967fb1c5acae4bc74ac33a97a Mon Sep 17 00:00:00 2001 From: Daniel Oeh Date: Mon, 28 May 2012 01:16:56 +0200 Subject: Downloads are now cancelled on timeout --- src/de/podfetcher/service/DownloadObserver.java | 4 +--- src/de/podfetcher/storage/DownloadRequester.java | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/de/podfetcher/service/DownloadObserver.java b/src/de/podfetcher/service/DownloadObserver.java index 54ba5e5ac..4472f6557 100644 --- a/src/de/podfetcher/service/DownloadObserver.java +++ b/src/de/podfetcher/service/DownloadObserver.java @@ -87,7 +87,7 @@ public class DownloadObserver extends Thread { }catch (Exception e) { Log.e(TAG, "Error happened when calling client: " + e.getMessage()); } - cancelDownload(); + requester.cancelDownload(context, id); } } }catch (InterruptedException e) { @@ -102,8 +102,6 @@ public class DownloadObserver extends Thread { this.client = callable; } - private void cancelDownload() {} - public Cursor getDownloadCursor() { DownloadManager.Query query = buildQuery(id); DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); diff --git a/src/de/podfetcher/storage/DownloadRequester.java b/src/de/podfetcher/storage/DownloadRequester.java index fabe1bfb5..3c44bd427 100644 --- a/src/de/podfetcher/storage/DownloadRequester.java +++ b/src/de/podfetcher/storage/DownloadRequester.java @@ -91,6 +91,29 @@ public class DownloadRequester { true); } + public void cancelDownload(final Context context, final long id) { + Log.d(TAG, "Cancelling download with id " + id); + DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); + int removed = manager.remove(id); + if (removed > 0) { + // Delete downloads in lists + Feed feed = getFeed(id); + if (feed != null) { + feeds.remove(feed); + } else { + FeedImage image = getFeedImage(id); + if (image != null) { + images.remove(image); + } else { + FeedMedia m = getFeedMedia(id); + if (media != null) { + media.remove(m); + } + } + } + } + } + /** Get a Feed by its download id */ public Feed getFeed(long id) { for(FeedFile f: feeds) { -- cgit v1.2.3