我的应用程序有一个要求,它必须以静默模式下载文件,并且一些文件处于非静默模式。静默模式是当应用程序开始下载文件时,用户不知道应用程序正在下载。而非静默模式,用户会知道文件正在下载。
在这种情况下,Non-silent 和 silent mode 可以同时下载,但是每次只能下载一个。
我考虑过使用 DownloadManager,但不确定 DownloadManager 是否具有控制它的这些类型的能力。
我目前有一个 RestSharp 库来与服务器通信。当我在谷歌上进行研究时,RestSharp 库似乎没有监控下载进度的方法。
xamarin 是否有其他库支持监控下载进度。
最佳答案
Android 操作系统为此创建了一个专用线程池,创建的线程数基于内部定义的基于资源的整数,因此可以根据 API 版本、设备要求等进行调整...
此外,如果您查看下载队列管理,它是基于 FIFO 的,因此 不 的第一个 X 号 Uris 失败、暂停、不允许当前网络(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,但我认为在我使用的最低端 Android 手机上它是低 1曾经见过并且花费 5 美元 ;-) 而在定制的 CDN 风格的 Android 服务器上它是 50
关于Android:DownloadManager 是作为 FIFO 还是同时下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37086320/