后台传送数据 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
使用 Windows 运行时中提供的 Windows.Networking.BackgroundTransfer API 改善你的应用,该应用具有高级文件下载和上载功能,可以在应用挂起期间在后台运行,演示每个操作生命周期管理以及在应用终止之后仍然持续进行。 此功能非常适合使用 HTTP 和 HTTPS 协议进行大型文件下载和上载操作。支持 FTP,但仅在执行下载操作时支持。
后台传输独立于调用应用单独运行,主要是针对资源(如视频、音乐和大型图像)的长期传输操作设计的。对于这些应用场景,使用后台传输非常必要,因为即使当应用挂起时,下载仍会继续进行。在电话上,即使应用终止,后台传输仍会继续进行。有关应用生命周期的详细信息,请参阅应用程序生命周期文档。
注意 如果你下载的是可能快速完成的小型资源,应该使用 HttpClient API 代替后台传输。
后台传输功能如何工作?
当应用使用后台传输来启动传输时,该请求将使用 BackgroundDownloader 或 BackgroundUploader 类对象进行配置和初始化。每个传输操作都由系统单独处理,并与正在调用的应用分开。如果你希望在应用 UI 中向用户提供状态,系统提供了进程信息;在发生传输时,你的应用可以暂停、恢复和取消传输,甚至可以读取数据。这种由系统处理的传输方式可以促进智能化的电源使用,并防止应用在联网状态下因遇到类似如下事件而可能带来的问题:应用挂起、终止或网络状态突然更改。
观看此简短视频可了解使用“后台传输”进行简单文件下载的演示。
Windows Phone 应用商店应用:我的应用可以使用后台传输创建经过身份验证的文件请求吗?
后台传输可提供支持基本的服务器和代理凭据、cookie 的方法,并且还支持每个传输操作使用自定义的 HTTP 头(通过 SetRequestHeader)。
此功能如何适应网络状态更改或意外关机?
当网络状态更改时,后台传输功能可保持每个传输操作的一致性体验,从而智能地利用连接功能提供的连接和运营商的数据计划状态信息。为了定义不同网络方案的行为,应用使用 BackgroundTransferCostPolicy 定义的值为每个操作设置一个成本策略。
例如,为某个操作定义的成本策略可以指示该操作应在设备使用按流量计费的网络时自动暂停。然后,当建立到“无限制”网络的连接时,自动恢复(或自动启动)传输。有关如何按成本定义网络的更多信息,请参阅 NetworkCostType。
虽然后台传输功能具备其自己的处理网络状态更改的机制,但对于使用网络连接功能的应用还有其他需要考虑的常规连接因素。有关其他信息,请参阅利用可用的网络连接信息。
注意
在 Windows Phone 应用商店应用中,存在一些允许用户监控和限制根据连接类型、漫游状态和用户数据套餐传输的数据量的功能。因此,即使 BackgroundTransferCostPolicy 表示传输应该继续,仍可在电话上暂停后台传输。
下表指示在电话的当前给定状态下,对于每个 BackgroundTransferCostPolicy 值,允许在电话上进行后台传输的时间。你可以使用 ConnectionCost 类确定电话的当前状态。
电话状态 | UnrestrictedOnly | 默认值 | 始终 |
---|---|---|---|
已连接到 WiFi | 允许 | 允许 | 允许 |
按流量计费的连接、未漫游、受数据限制、计划不超出限制 | 拒绝 | 允许 | 允许 |
按流量计费的连接、未漫游、受数据限制、计划超出限制 | 拒绝 | 拒绝 | 允许 |
按流量计费的连接、漫游、受数据限制 | 拒绝 | 拒绝 | 允许 |
按流量计费的连接、不受数据限制。仅当用户在“流量管理”UI 中启用“限制后台数据”时,才会发生该状态。 | 拒绝 | 拒绝 | 拒绝 |
RequestUnconstrainedDownloadsAsync 和 RequestUnconstrainedUploadsAsync 在电话上不受支持。对这些 API 的调用将成功编译,但在运行时会出现 E_NOT_IMPL 异常并失败。
了解有关后台传输的详细信息
节 | 描述 |
---|---|
传输来自网络资源的文件 | 向你的 Windows 应用商店应用中添加安全下载和上载文件的功能。 |
Background Transfer API reference | 整个后台传输 Windows 运行时命名空间的 API 文档。 |
后台传输示例 | 此示例演示了 Windows 应用商店应用后台传输 API 的节能、节省成本且灵活的行为。 |