diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2013-08-03 13:58:31 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2013-08-03 13:58:31 +0200 |
commit | 9ba3dc0d823b786700010a60d38f47c802101d27 (patch) | |
tree | 89b74eff993fdcb3b373c64695c72d534f1a80cd /src/de/danoeh/antennapod/service/download/Downloader.java | |
parent | 2071793e6aa1a106744078fcbcf7c0529ed315c4 (diff) | |
download | AntennaPod-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.java | 32 |
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() { |