diff options
author | Tom Hennen <tom.hennen@gmail.com> | 2015-06-27 14:55:48 -0400 |
---|---|---|
committer | Tom Hennen <tom.hennen@gmail.com> | 2015-06-27 14:55:48 -0400 |
commit | 473444291f68c7f8a205712c1b51fad74b0b1420 (patch) | |
tree | e13ff6f7c0a89dab243ba4776444ed0ac239326f /core/src | |
parent | 5d553394ba3f204435be78f3a77262a579bd40d5 (diff) | |
download | AntennaPod-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.java | 15 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java | 7 |
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); |