summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Oeh <daniel@danielpc.(none)>2012-05-28 01:16:56 +0200
committerDaniel Oeh <daniel@danielpc.(none)>2012-05-28 01:16:56 +0200
commitecc2ddb6e434246967fb1c5acae4bc74ac33a97a (patch)
tree00a023f8e878ae77559b9334ae0b28785aad92d9
parentbc0b8fa1ef9714943152c896535c1facefc2d3af (diff)
downloadAntennaPod-ecc2ddb6e434246967fb1c5acae4bc74ac33a97a.zip
Downloads are now cancelled on timeout
-rw-r--r--src/de/podfetcher/service/DownloadObserver.java4
-rw-r--r--src/de/podfetcher/storage/DownloadRequester.java23
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) {