Android: DownloadManager 是先入先出还是同时下载文件

Android: does DownloadManager download files as a FIFO or simultaneously

我的应用程序有一个要求,它必须以静默模式下载文件,并且一些文件处于非静默模式。静默模式是当应用程序开始下载文件时,用户不知道应用程序正在下载。而非静默模式,用户会知道文件正在下载。

在这种情况下,非静默和静默模式可以同时下载,但每次只能下载一个。

我考虑过使用 DownloadManager,但不确定 DownloadManager 是否具有这些类型的控制能力。

我目前有一个 RestSharp 库来与服务器通信。当我研究 google 时,RestSharp 库似乎没有监控下载进度的方法。

xamarin 是否有其他支持监控下载进度的库。

Android OS 为此目的创建了一个专用线程池,创建的线程数基于内部定义的基于资源的整数,因此可以根据 API 发布、设备要求等...

此外,如果您查看下载队列管理,它是基于 FIFO 的,所以第一个 X number 个 Uris not 失败、暂停、不允许当前网络(wifi、蜂窝)类型等。将可供下载。

Download 管理器中定义为;

final int maxConcurrent = Resources.getSystem().getInteger( com.android.internal.R.integer.config_MaxConcurrentDownloadsAllowed);

因此它不是一个固定的数字,但要找出有多少线程可用于下载获取内部整数资源 config_MaxConcurrentDownloadsAllowed:

Java:


int id = Resources.getSystem().getIdentifier("config_MaxConcurrentDownloadsAllowed", "integer", "android");
int maxConcurrentDownloadsAllowed = Resources.getSystem().getInteger(id);

C#


var id = Resources.GetIdentifier("config_MaxConcurrentDownloadsAllowed", "integer", "android");
var maxConcurrentDownloadsAllowed = Resources.GetInteger(id);

注:

就我个人而言,在我针对 运行 单元测试的大多数设备上,它是 5,但我认为这是低 1 在我见过的最低端 Android phone 上花费 5 美元 ;-) 在定制的 CDN 风格 Android 服务器上它是 50