2011-11-17 71 views
0

在windows phone 7上使用BackgroundTransferService時,有沒有辦法控制TransferProgressChanged被調用的頻率?我猜測它與用於下載的內部緩衝區的大小有關,但我沒有看到用於設置它的任何屬性。BackgroundTransferService - TransferProgressChanged什麼時候被調用?

BytesReceived值不是等間隔的,或者對於同一個文件的重複下載,它們甚至是相同的,但似乎是大約每個文件總大小的1%。

這對一個小文件是可以的,但是在下載大型(2GB電影)文件時會導致用戶界面無響應。

+0

您可以顯示您實際在做什麼,因爲BackgroundTranserService不應該影響用戶界面。 –

+0

也許沒有反應是錯誤的詞。我只想要一個比每分鐘更新更頻繁的進度指示符,或者我目前正在進行更新? – Peregrine

回答

1

當下載的百分比發生變化時,BackgroundTransferService會更新(僅在整個數字上,如您所注意的)。這與市場下載等保持一致,其中進度有時需要很長時間才能更新(至少當我被迫使用我的邊緣連接進行下載時)。

在你的情況下,如果文件很大,我會使用第二個動畫,以便用戶知道下載仍在進行中。我可能會在實際百分比進度顯示上方添加一個「正在下載...」文本併爲橢圓動畫。

報告自己執行的下載過程相對容易,但BackgroundTransferService由操作系統控制,因此必須處理跨所有應用程序的資源分配。如果您正在使用它,那麼大部分時間用戶甚至不會看到進度顯示,因爲他們將會做其他事情。這意味着報告進度往往浪費資源。如果我要將2GB文件下載到手機中,我會每隔20-30分鐘檢查一次進度,並且在返回到我正在做的其他任何事情之前,我不會等待進度顯示被更新。

+0

這是WP7.5看似半完成的又一例子。越來越多的人認爲我應該停止Windows移動開發,直到可以使用統一的Windows 8平臺。 – Peregrine

+0

用答覆更新了我的答案。我不相信它已經完成了一半,而是很多開發人員(包括我自己)都有Windows開發中的習慣/技術,他們希望在WP7上繼續使用它們。大多數時候這些都是不必要的。 – calum

相關問題