summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/service/download/Downloader.java
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-08-03 13:58:31 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2013-08-03 13:58:31 +0200
commit9ba3dc0d823b786700010a60d38f47c802101d27 (patch)
tree89b74eff993fdcb3b373c64695c72d534f1a80cd /src/de/danoeh/antennapod/service/download/Downloader.java
parent2071793e6aa1a106744078fcbcf7c0529ed315c4 (diff)
downloadAntennaPod-9ba3dc0d823b786700010a60d38f47c802101d27.zip
Improved DownloadService, several bugfixes
- DownloadService should now terminate properly as soon as all downloads have been completed. - Notification bug ("0 downloads left" notification) should be fixed
Diffstat (limited to 'src/de/danoeh/antennapod/service/download/Downloader.java')
-rw-r--r--src/de/danoeh/antennapod/service/download/Downloader.java32
1 files changed, 10 insertions, 22 deletions
diff --git a/src/de/danoeh/antennapod/service/download/Downloader.java b/src/de/danoeh/antennapod/service/download/Downloader.java
index 8df2bf977..67507d40f 100644
--- a/src/de/danoeh/antennapod/service/download/Downloader.java
+++ b/src/de/danoeh/antennapod/service/download/Downloader.java
@@ -2,48 +2,36 @@ package de.danoeh.antennapod.service.download;
import de.danoeh.antennapod.R;
+import java.util.concurrent.Callable;
+
/** Downloads files */
-public abstract class Downloader extends Thread {
+public abstract class Downloader implements Callable<Downloader> {
private static final String TAG = "Downloader";
- private DownloaderCallback downloaderCallback;
- protected boolean finished;
+ protected volatile boolean finished;
protected volatile boolean cancelled;
- protected volatile DownloadRequest request;
- protected volatile DownloadStatus result;
+ protected DownloadRequest request;
+ protected DownloadStatus result;
- public Downloader(DownloaderCallback downloaderCallback,
- DownloadRequest request) {
+ public Downloader(DownloadRequest request) {
super();
- this.downloaderCallback = downloaderCallback;
this.request = request;
this.request.setStatusMsg(R.string.download_pending);
this.cancelled = false;
}
- /**
- * This method must be called when the download was completed, failed, or
- * was cancelled
- */
- protected void finish() {
- if (!finished) {
- finished = true;
- downloaderCallback.onDownloadCompleted(this);
- }
- }
-
protected abstract void download();
- @Override
- public final void run() {
+ public final Downloader call() {
download();
if (result == null) {
throw new IllegalStateException(
"Downloader hasn't created DownloadStatus object");
}
- finish();
+ finished = true;
+ return this;
}
public DownloadRequest getDownloadRequest() {