summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorTom Hennen <tom.hennen@gmail.com>2015-06-27 14:55:48 -0400
committerTom Hennen <tom.hennen@gmail.com>2015-06-27 14:55:48 -0400
commit473444291f68c7f8a205712c1b51fad74b0b1420 (patch)
treee13ff6f7c0a89dab243ba4776444ed0ac239326f /core/src
parent5d553394ba3f204435be78f3a77262a579bd40d5 (diff)
downloadAntennaPod-473444291f68c7f8a205712c1b51fad74b0b1420.zip
Folks weren't always getting the updated copy of the download list, now they are.
fixes AntennaPod/AntennaPod#968
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java15
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java7
2 files changed, 16 insertions, 6 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java
index a13130082..85b1f699f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DownloadObserver.java
@@ -12,6 +12,7 @@ import de.danoeh.antennapod.core.BuildConfig;
import de.danoeh.antennapod.core.service.download.DownloadService;
import de.danoeh.antennapod.core.service.download.Downloader;
+import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -85,15 +86,15 @@ public class DownloadObserver {
if (downloadService == null) {
connectToDownloadService();
}
- callback.onContentChanged();
+ if (downloadService != null) {
+ callback.onContentChanged(downloadService.getDownloads());
+ }
startRefresher();
}
};
public interface Callback {
- void onContentChanged();
-
- void onDownloadDataAvailable(List<Downloader> downloaderList);
+ void onContentChanged(List<Downloader> downloaderList);
}
private void connectToDownloadService() {
@@ -116,7 +117,7 @@ public class DownloadObserver {
Log.d(TAG, "Connection to service established");
List<Downloader> downloaderList = downloadService.getDownloads();
if (downloaderList != null && !downloaderList.isEmpty()) {
- callback.onDownloadDataAvailable(downloaderList);
+ callback.onContentChanged(downloaderList);
startRefresher();
}
}
@@ -156,12 +157,14 @@ public class DownloadObserver {
handler.post(new Runnable() {
@Override
public void run() {
- callback.onContentChanged();
if (downloadService != null) {
List<Downloader> downloaderList = downloadService.getDownloads();
+ callback.onContentChanged(downloaderList);
if (downloaderList == null || downloaderList.isEmpty()) {
Thread.currentThread().interrupt();
}
+ } else {
+ callback.onContentChanged(new ArrayList<Downloader>());
}
}
});
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 1ad4a9d0d..238cad763 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -435,6 +435,7 @@ public class DownloadService extends Service {
} else {
Log.e(TAG, "Could not cancel download with url " + url);
}
+ sendBroadcast(new Intent(ACTION_DOWNLOADS_CONTENT_CHANGED));
} else if (StringUtils.equals(intent.getAction(), ACTION_CANCEL_ALL_DOWNLOADS)) {
for (Downloader d : downloads) {
@@ -1246,6 +1247,12 @@ public class DownloadService extends Service {
}
public List<Downloader> getDownloads() {
+ if (downloads == null) {
+ // this is unusual, but it should be OK, we'll return
+ // an empty list to make it easy for people
+ return new ArrayList<Downloader>();
+ }
+
// return a copy of downloads, but the copy doesn't need to be synchronized.
synchronized (downloads) {
return new ArrayList<Downloader>(downloads);