2014-11-25 63 views
5

我使用BackgroundUploader将CameraRoll中的图像/视频上传到存储服务。这是Windows Phone 8.1上的WinRT应用程序。Windows Phone 8.1 - 用于BackgroundUpload的BackgroundTransferStatus

这项工作很好,直到有大量文件需要上传。我期待着有关电池和CPU使用情况的问题,所以我正在检查所有UploadOperations的BackgroungTransferStatus,并打算向用户显示一条消息,如果我们遇到PausedSystemPolicy状态。如果手机决定暂停上传,这是预期的状态。

我的问题是,虽然上传肯定看起来是暂停(它不会发送一个http帖子)状态继续说“正在运行”。而且,取消上传操作不起作用。它仍然继续坐在那里说“运行”,没有发送字节,也没有收到响应。最终,它确实恢复上传,但我们似乎很快就遇到了问题,我们再次停下来。我了解限制的必要性,这是我关心的用户体验。

为什么已暂停的上传仍处于“正在运行”状态?有没有人遇到类似的东西?

+0

我有一个问题,UploadOperation在诺基亚Lumia 520上根本没有给我任何回调。 – Perfection 2015-12-23 12:37:53

回答

0

如果有多个下载已在运行,则可能会发生这种情况。

假设有5个下载正在运行,并且您排队第六个。除非您用BackgroundTransferPriority.High标记,否则第六次下载不会立即开始。该操作的状态显示为正在运行,但在插槽可用之前它不会开始发送或接收数据。如果操作在队列中,暂停操作不会立即生效。但是,一旦操作变为活动状态,暂停指令将应用于操作。

作为一种解决方法,您可以关注进度事件。如果下载没有提供任何进展,则知道它可能在队列中。

+0

感谢这个,它解释了我看到的情况,当我有大量的上传和一些PausedNoNetwork和其他运行。 但是,有些情况不正确,有些则不正确。没有任何上传正在执行任何http请求,但都处于“正在运行”状态。这就像是,借鉴你所提到的,他们都在队列中,并没有任何活动。 BackgroundTransfer中的CPU周期限制是否会阻止它执行诸如将上传从队列移至活动的任务? – 2014-11-27 09:00:35

+0

你已经提到你的问题。该API强制执行一些上传和时间限制。你可能会看到你的上传暂停,直到你教这个限制。或者我错过了什么? – kiewic 2014-11-30 17:56:24