Android:DownloadManager 是作为 FIFO 还是同时下载文件

标签 android xamarin restsharp android-download-manager

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

在这种情况下,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/

相关文章:

android - 在 Kotlin 中初始化 SharedPreference 的正确方法

android - android 联系人数据中的 TIMES_CONTACTED 值问题

android - RenderScript 阻塞函数调用

ios - 更新到 Xamarin touch 8.2 并使用 mvvmcross

c# - 动态反序列化为 RestSharp 中的属性

java - getValue 数据库条目 onitemClick

android - MvvmCross:如何以编程方式构建带有自定义适配器的 MvxListView?

c# - Android网络可达性(离线模式)?

c# - 如何使用Restsharp正确添加Request Payload?

c# - RestSharp - 反序列化具有无效键名的 json 响应(包含句点)