summaryrefslogtreecommitdiff
path: root/src/de
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-08-21 18:37:18 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-08-21 18:37:18 +0200
commit8bca22eff93ce387bd610b82aa95363c8e4c36b7 (patch)
tree34757a0d5329e6cd2d2ea35daaeb1132b46a235e /src/de
parenteab911c2ff211ae7896b931e459b3a64c24870e8 (diff)
downloadAntennaPod-8bca22eff93ce387bd610b82aa95363c8e4c36b7.zip
Downloads weren't cancelled properly
Diffstat (limited to 'src/de')
-rw-r--r--src/de/danoeh/antennapod/service/download/DownloadService.java4
-rw-r--r--src/de/danoeh/antennapod/service/download/Downloader.java7
-rw-r--r--src/de/danoeh/antennapod/service/download/HttpDownloader.java5
3 files changed, 11 insertions, 5 deletions
diff --git a/src/de/danoeh/antennapod/service/download/DownloadService.java b/src/de/danoeh/antennapod/service/download/DownloadService.java
index aac40a664..25667f20d 100644
--- a/src/de/danoeh/antennapod/service/download/DownloadService.java
+++ b/src/de/danoeh/antennapod/service/download/DownloadService.java
@@ -243,7 +243,7 @@ public class DownloadService extends Service {
Log.d(TAG, "Cancelling download with url " + url);
Downloader d = getDownloader(url);
if (d != null) {
- d.interrupt();
+ d.cancel();
removeDownload(d);
} else {
Log.e(TAG, "Could not cancel download with url " + url);
@@ -251,7 +251,7 @@ public class DownloadService extends Service {
} else if (intent.getAction().equals(ACTION_CANCEL_ALL_DOWNLOADS)) {
for (Downloader d : downloads) {
- d.interrupt();
+ d.cancel();
DownloadRequester.getInstance().removeDownload(
d.getStatus().getFeedFile());
d.getStatus().getFeedFile().setFile_url(null);
diff --git a/src/de/danoeh/antennapod/service/download/Downloader.java b/src/de/danoeh/antennapod/service/download/Downloader.java
index 13ee8896c..aa2e51690 100644
--- a/src/de/danoeh/antennapod/service/download/Downloader.java
+++ b/src/de/danoeh/antennapod/service/download/Downloader.java
@@ -12,6 +12,8 @@ public abstract class Downloader extends Thread {
private DownloadService downloadService;
protected boolean finished;
+
+ protected volatile boolean cancelled;
protected volatile DownloadStatus status;
@@ -19,6 +21,7 @@ public abstract class Downloader extends Thread {
super();
this.downloadService = downloadService;
this.status = status;
+ this.cancelled = false;
handler = new Handler();
}
@@ -55,5 +58,9 @@ public abstract class Downloader extends Thread {
public DownloadStatus getStatus() {
return status;
}
+
+ public void cancel() {
+ cancelled = true;
+ }
} \ No newline at end of file
diff --git a/src/de/danoeh/antennapod/service/download/HttpDownloader.java b/src/de/danoeh/antennapod/service/download/HttpDownloader.java
index fb9d0c6ec..14ca0000f 100644
--- a/src/de/danoeh/antennapod/service/download/HttpDownloader.java
+++ b/src/de/danoeh/antennapod/service/download/HttpDownloader.java
@@ -65,14 +65,13 @@ public class HttpDownloader extends Downloader {
publishProgress();
if (AppConfig.DEBUG)
Log.d(TAG, "Starting download");
- while ((count = in.read(buffer)) != -1
- && !isInterrupted()) {
+ while (!cancelled && (count = in.read(buffer)) != -1) {
out.write(buffer, 0, count);
status.setSoFar(status.getSoFar() + count);
status.setProgressPercent((int) (((double) status
.getSoFar() / (double) status.getSize()) * 100));
}
- if (isInterrupted()) {
+ if (cancelled) {
onCancelled();
} else {
onSuccess();