diff options
author | ByteHamster <info@bytehamster.com> | 2022-04-09 16:28:06 +0200 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2022-04-09 16:28:06 +0200 |
commit | 8ea814cfdbfdca86d87a50f7efe070f87286310b (patch) | |
tree | 235860175d118a390a75b657245af10a228528ee /core/src/main/java/de | |
parent | 52809976a0660224d74d31a4230802b05a4ae1e9 (diff) | |
download | AntennaPod-8ea814cfdbfdca86d87a50f7efe070f87286310b.zip |
Only crash debug version when trying to enqueue too many downloads at once
Diffstat (limited to 'core/src/main/java/de')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java | 12 |
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) { |