summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2022-04-09 16:28:06 +0200
committerByteHamster <info@bytehamster.com>2022-04-09 16:28:06 +0200
commit8ea814cfdbfdca86d87a50f7efe070f87286310b (patch)
tree235860175d118a390a75b657245af10a228528ee /core/src/main
parent52809976a0660224d74d31a4230802b05a4ae1e9 (diff)
downloadAntennaPod-8ea814cfdbfdca86d87a50f7efe070f87286310b.zip
Only crash debug version when trying to enqueue too many downloads at once
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java12
1 files changed, 9 insertions, 3 deletions
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 128b7a65d..3efb8b47b 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
@@ -18,6 +18,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.core.app.ServiceCompat;
import androidx.core.content.ContextCompat;
+import de.danoeh.antennapod.core.BuildConfig;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.feed.LocalFeedUpdater;
import org.apache.commons.io.FileUtils;
@@ -139,9 +140,6 @@ public class DownloadService extends Service {
}
public static void download(Context context, boolean cleanupMedia, DownloadRequest... requests) {
- if (requests.length > 100) {
- throw new IllegalArgumentException("Android silently drops intent payloads that are too large");
- }
ArrayList<DownloadRequest> requestsToSend = new ArrayList<>();
for (DownloadRequest request : requests) {
if (!isDownloadingFile(request.getSource())) {
@@ -150,7 +148,15 @@ public class DownloadService extends Service {
}
if (requestsToSend.isEmpty()) {
return;
+ } else if (requestsToSend.size() > 100) {
+ if (BuildConfig.DEBUG) {
+ throw new IllegalArgumentException("Android silently drops intent payloads that are too large");
+ } else {
+ Log.d(TAG, "Too many download requests. Dropping some to avoid Android dropping all.");
+ requestsToSend = new ArrayList<>(requestsToSend.subList(0, 100));
+ }
}
+
Intent launchIntent = new Intent(context, DownloadService.class);
launchIntent.putParcelableArrayListExtra(DownloadService.EXTRA_REQUESTS, requestsToSend);
if (cleanupMedia) {