导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Windows Phone 8 的后台文件传输

2014/6/18

适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

通过 Windows Phone OS 7.1,应用程序能够对一个或多个使用 HTTP 的文件上传或下载操作进行排队,这些操作将在后台执行,即使当应用程序不再在前台运行时也是如此。 应该使用用于启动文件传输的 API 来查询现有传输的状态,并为最终用户提供进度指示器。有关创建使用后台文件传输的应用程序的分步演练,请参阅如何实现 Windows Phone 8 的后台文件传输

本主题包括以下部分。

可以在 Microsoft.Phone.BackgroundTransfer 命名空间中找到后台传输服务 API。您将使用的主要编程元素为 BackgroundTransferRequestBackgroundTransferService 类。BackgroundTransferRequest 对象表示单个传输请求,包括目标和目标文件路径、传输方法以及传输的当前状态。 BackgroundTransferService 对象用于启动新传输以及查询或删除现有文件传输。

后台传输服务仅支持使用 HTTP 和 HTTPS 的传输。不支持 FTP。您可以使用 BackgroundTransferService 在后台上传和下载文件。GET HTTP 方法支持下载文件,POST 方法支持下载或上传文件。可以通过使用 BackgroundTransferRequest 对象的 Method 属性来设置传输方法。

所有后台传输都需要本地文件路径。下载需要目标路径,该路径指定将保存下载的文件的位置。上传需要源路径,该路径指定将从中上传文件的位置。后台传输的所有本地路径都必须位于您应用程序的独立存储中,在名为“/shared/transfers”的根目录中。该目录是操作系统在安装应用程序时创建的,但如果应用程序删除或重命名该目录,则必须在启动任何文件传输之前重新创建该目录。您可以在“/shared/transfers”根目录下创建您选择的任何其他目录结构,并且可以在传输完成之后复制或删除文件,目的是确保后台传输服务不修改文件,但尝试使用“/shared/transfers”目录之外的路径启动传输将引发异常。

BackgroundTransferRequest 对象的 Headers 属性用于设置传输请求的 HTTP 标题。保留以下标题以供系统使用,不能通过调用应用程序使用。当使用 Add(BackgroundTransferRequest) 方法排列传输请求时,向标题集合中添加以下标题之一将引发 NotSupportedException

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • Range

  • Unless-Modified-Since

通常,一旦符合由 TransferPreferences 属性设置的要求以及与电池电量和可用连接有关的系统要求,便会开始执行通过后台传输 API 启动的后台传输。但是,由于多个应用程序可能已排列后台传输,因此在先前添加的传输完成之后、传输开始之前可能有额外的延迟。

Windows Phone 8 引入了数据感测功能,该功能允许用户请求当他们接近数据计划的限制时,应用限制数据传输。如果用户已经开启该功能,那么后台传输可能中止,具体取决于 ConnectionCost 的以下成员的值。

  • ApproachingDataLimit - 如果该值为 true,则无论应用当前是否正在前台运行,后台传输都将继续。

  • OverDataLimit - 如果该值为 true,只当应用当前正在前台运行,后台传输才会继续。

  • Roaming - 如果该值为 true,则无论应用当前是否正在前台运行,后台传输都将中止。

有关数据感测功能和应用如何使用它调整数据用法的更多信息,请参见在 Windows Phone 8 中如何使用流量感知 API 调整数据使用量

重要说明重要说明:

对于使用后台文件传输的应用程序,除了常规应用程序的要求之外,还必须符合其他认证要求才能在 商店 中列出应用程序。当您设计和实现应用程序时,应该考虑这些要求。有关更多信息,请参见Windows Phone 特定应用类型的其他要求

操作系统对于与文件大小、连接速度以及设备资源有关的后台传输强制很多限制。本节列出了 Windows Phone 的后台传输策略。请注意,Windows Phone 模拟器模拟与 Wi-Fi 和外部电源相连的设备。若要验证应用程序是否在其他条件下工作,您应该在物理设备上进行测试。

大小

上传最大文件大小

通过手机网络连接 - 5 MB

通过 Wi-Fi 连接(使用电池)- 20 MB

通过 Wi-Fi 连接(使用外部电源)- 100 MB

通过手机网络连接的最大下载大小

20 MB - 如果超过此限制,则传输的 TransferPreferences 属性将自动更改为 AllowBattery,它对需要 Wi-Fi 的传输有影响。

通过 Wi-Fi 而没有外部电源的最大下载大小

100 MB - 对于大于 100 MB 的文件,您必须将传输的 TransferPreferences 属性设置为 None,否则传输将失败。如果您不知道传输的大小,而且它有可能超出限制,那么您应将该值设为 None,这意味着传输将只在手机与外部电源连接而且具有 Wi-Fi 连接时进行。

限制

每个应用程序的队列中未完成的最大请求数(这包括活动和挂起的请求)。

25 - 完成后不会自动从队列中删除传输。应用程序应该使用 Remove(BackgroundTransferRequest) 从队列中删除完成的传输,以便为新的传输留出空槽。

设备上所有应用程序的最大并发传输数

2

设备上所有应用程序的最大排队传输数

500

每个请求的最大 HTTP 标题数

15

HTTP 标题的最大大小

每个 16 KB

策略

  • 当应用处于前台时,后台传输服务将在以下数据网络上进行传输。当应用不处于前台时,传输将不在这些网络上进行。HttpWebRequest 对象同样有此限制,因此从这一方面看,执行自己的传输确实比使用后台传输有优势。

    • 2G、EDGE、标准 GPRS

    在 3G 和更高的网络中,假设所有其他条件都符合,那么无论应用是否正在前台运行,后台传输都将继续。

  • 服务器端所需的文件内容长度标题大于 5 MB。服务器应该始终在响应中返回内容长度。不这样做可能会导致严重降低传输的性能。

  • 服务器端所需的文件范围标题大于 5 MB。服务器应该始终支持范围请求标题。不这样做可能会导致严重降低传输的性能。

慢速传输

如果设备的网络连接速度低于以下速率,则会暂停传输并重试。这些限制(单位为 Kb/s)比较低,因此通常不会达到。

网络媒介

最低数据速率

3G

50 Kbps

Wi-Fi/USB

100 Kbps

显示:
© 2014 Microsoft