summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2012-08-18 00:47:52 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2012-08-18 00:47:52 +0200
commitbcbc1624123b4c7be974d9f67cd1bd31114d1d42 (patch)
tree0608e0b869b193d4ec5a24c6e61133a5694bf2fb /src
parent026efe29c3c26a5429c09c4bb6421dcde9c8ff78 (diff)
downloadAntennaPod-bcbc1624123b4c7be974d9f67cd1bd31114d1d42.zip
Made sure that cancelled/failed downloads are handled correctly
Diffstat (limited to 'src')
-rw-r--r--src/de/danoeh/antennapod/service/download/DownloadService.java51
-rw-r--r--src/de/danoeh/antennapod/storage/DownloadRequester.java1
2 files changed, 21 insertions, 31 deletions
diff --git a/src/de/danoeh/antennapod/service/download/DownloadService.java b/src/de/danoeh/antennapod/service/download/DownloadService.java
index 67094133a..96846e6ed 100644
--- a/src/de/danoeh/antennapod/service/download/DownloadService.java
+++ b/src/de/danoeh/antennapod/service/download/DownloadService.java
@@ -249,23 +249,16 @@ public class DownloadService extends Service {
}
} else if (intent.getAction().equals(ACTION_CANCEL_ALL_DOWNLOADS)) {
- handler.post(new Runnable() {
-
- @Override
- public void run() {
- for (Downloader d : downloads) {
- d.interrupt();
- DownloadRequester.getInstance().removeDownload(
- d.getStatus().getFeedFile());
- d.getStatus().getFeedFile().setFile_url(null);
- if (AppConfig.DEBUG)
- Log.d(TAG, "Cancelled all downloads");
- }
- downloads.clear();
- sendBroadcast(new Intent(
- ACTION_DOWNLOADS_CONTENT_CHANGED));
- }
- });
+ for (Downloader d : downloads) {
+ d.interrupt();
+ DownloadRequester.getInstance().removeDownload(
+ d.getStatus().getFeedFile());
+ d.getStatus().getFeedFile().setFile_url(null);
+ if (AppConfig.DEBUG)
+ Log.d(TAG, "Cancelled all downloads");
+ }
+ downloads.clear();
+ sendBroadcast(new Intent(ACTION_DOWNLOADS_CONTENT_CHANGED));
}
queryDownloads();
@@ -327,7 +320,7 @@ public class DownloadService extends Service {
@SuppressLint("NewApi")
public void onDownloadCompleted(final Downloader downloader) {
- AsyncTask<Void, Void, Void> handler = new AsyncTask<Void, Void, Void>() {
+ final AsyncTask<Void, Void, Void> handlerTask = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
@@ -359,13 +352,16 @@ public class DownloadService extends Service {
}
}
removeDownload(downloader);
+ if (!successful) {
+ queryDownloads();
+ }
return null;
}
};
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD_MR1) {
- handler.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ handlerTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
- handler.execute();
+ handlerTask.execute();
}
}
@@ -374,17 +370,10 @@ public class DownloadService extends Service {
* DownloadService list.
*/
private void removeDownload(final Downloader d) {
- handler.post(new Runnable() {
-
- @Override
- public void run() {
- downloads.remove(d);
- DownloadRequester.getInstance().removeDownload(
- d.getStatus().getFeedFile());
- sendBroadcast(new Intent(ACTION_DOWNLOADS_CONTENT_CHANGED));
- }
- });
-
+ downloads.remove(d);
+ DownloadRequester.getInstance().removeDownload(
+ d.getStatus().getFeedFile());
+ sendBroadcast(new Intent(ACTION_DOWNLOADS_CONTENT_CHANGED));
}
/**
diff --git a/src/de/danoeh/antennapod/storage/DownloadRequester.java b/src/de/danoeh/antennapod/storage/DownloadRequester.java
index de3a13db5..13c8f58d0 100644
--- a/src/de/danoeh/antennapod/storage/DownloadRequester.java
+++ b/src/de/danoeh/antennapod/storage/DownloadRequester.java
@@ -109,6 +109,7 @@ public class DownloadRequester {
Log.d(TAG, "Cancelling download with url " + downloadUrl);
Intent cancelIntent = new Intent(DownloadService.ACTION_CANCEL_DOWNLOAD);
cancelIntent.putExtra(DownloadService.EXTRA_DOWNLOAD_URL, downloadUrl);
+ context.sendBroadcast(cancelIntent);
}
/** Cancels all running downloads */