在Windows Phone 7上使用BackgroundTransferService时,有没有办法控制调用TransferProgressChanged的频率?我猜它与用于下载的内部缓冲区的大小有关,但是我没有看到任何设置它的属性。
BytesReceived值不是等间隔,即使重复下载同一文件也不一样,但似乎大约是文件总大小的1%。
这对于一个小文件来说没问题,但在下载大型(2GB电影)文件时却会造成非响应的用户界面。
答案 0 :(得分:1)
当下载百分比发生变化时,BackgroundTransferService会更新(仅在您注意到的整数上)。这与市场下载等保持一致,其中进度有时需要很长时间才能更新(至少在我被迫使用边缘连接下载时)。
在您的情况下,如果文件很大,我会使用第二个动画,以便用户知道下载仍在进行中。我可能会在实际百分比进度显示上方添加一个“下载...”文本,并为省略号设置动画。
报告您自己执行的下载进度相对容易,但BackgroundTransferService由操作系统控制,因此必须处理所有应用程序的资源分配。如果您正在使用它,那么大多数时候用户甚至看不到进度显示,因为他们将做其他事情。这意味着过于频繁地报告进度是浪费资源。如果我要将2GB文件下载到我的手机上,我会每20-30分钟检查一次进度,我不会等到进展显示更新后再回到我正在做的其他事情。