共用方式為


在背景傳輸資料 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

使用 Windows 執行階段中提供的 Windows.Networking.BackgroundTransfer API,以進階的檔案下載和上傳功能來增強您的應用程式,這些功能可在應用程式暫停期間於背景執行、展示每個操作週期管理,並在應用程式終止之後持續。 對於使用 HTTP 與 HTTPS 通訊協定進行大量檔案下載及上傳作業時,這個功能非常理想。支援 FTP,但是僅支援下載作業。

背景傳輸會與呼叫應用程式分開執行,而且其設計主要是針對影片、音樂和大型影像等資源的長時間傳輸操作所設計。對於這些案例,必須使用背景傳輸,因為應用程式即使暫停,下載還是會繼續進行。在電話上,即使應用程式終止了,還是會繼續傳輸背景。如需應用程式週期的詳細資訊,請參閱應用程式週期文件。

注意   如果您是下載可以快速完成的小量資源,則應該改用 HttpClient API 來取代背景傳輸。

 

背景傳送功能如何運作?

當應用程式使用背景傳輸來起始傳輸時,會使用 BackgroundDownloaderBackgroundUploader 類別物件設定和初始化要求。每個傳輸作業會由系統分別處理,並與呼叫的應用程式分隔。如果您想要在應用程式 UI 中為使用者提供狀態,而且應用程式可以在傳輸進行暫停、繼續、取消,甚至讀取資料,則可以使用進度資訊。系統處理傳輸的方式可以運用更智慧的電力使用方法,而且可以避免當連線應用程式發生應用程式暫停、終止或是突發性網路狀態變更這類事件時引發的問題。

觀賞這部短片,即可取得使用背景傳輸下載簡單檔案的示範。

Windows Phone 市集應用程式:我的應用程式可以使用背景傳輸來建立已驗證的檔案要求嗎?

背景傳輸提供的方法,支援基本伺服器與 Proxy 認證、Cookie,並且支援在每個傳輸作業使用自訂的 HTTP 標頭 (透過 SetRequestHeader)。

這項功能如何適應網路狀態變更或意外的關機?

當網路狀態變更時,背景傳輸功能會維護每個傳輸作業的一致體驗,以智慧方式使用連線能力功能所提供的連線能力與電信業者數據傳輸方案狀態資訊。若要定義不同網路案例的行為,應用程式會使用 BackgroundTransferCostPolicy 定義的值來設定每個傳輸作業的成本原則。

例如,為作業定義的成本原則可以指出裝置使用計量付費網路時應該自動暫停作業。當建立「不受限制」網路的連線時,會自動繼續 (或重新啟動) 傳輸。如需如何以成本定義網路的詳細資訊,請參閱 NetworkCostType

儘管背景傳輸功能有它自己的網路狀態變更處理機制,網路連線的應用程式還有其他一般連線考量。請參閱利用可用的網路連線資訊來取得其他資訊。

注意  

在 Windows Phone 市集應用程式中,允許使用者根據連線類型、漫遊狀態及使用者數據傳輸方案來監視和限制傳輸的資料量。因此,即使 BackgroundTransferCostPolicy 指示傳輸應該繼續,手機上的背景傳輸還是可能被暫停。

下表說明每個 BackgroundTransferCostPolicy 值何時可在電話上允許背景傳輸 (根據電話的目前狀態)。您可以使用 ConnectionCost 類別來判定電話的目前狀態。

電話狀態 僅無限制 預設值 永遠
連線到 WiFi 允許 允許 允許
計量付費連線、非漫遊、低於資料限制、追蹤以維持低於限制 拒絕 允許 允許
計量付費連線、非漫遊、低於資料限制、追蹤是否超過限制 拒絕 拒絕 允許
計量付費連線、漫遊、低於資料限制 拒絕 拒絕 允許
計量付費連線、超過資料限制只有當使用者啟用「限制資料感應 UI 中的背景資料」時才會發生這個狀態。 拒絕 拒絕 拒絕

 

電話不支援 RequestUnconstrainedDownloadsAsyncRequestUnconstrainedUploadsAsync。呼叫這些 API 可以順利編譯,但如果出現 E_NOT_IMPL 例外就會在執行階段失敗。

深入了解背景傳輸

章節 說明
從網路資源傳輸檔案

將功能新增到安全下載,並將檔案上傳到 Windows 市集應用程式。

Background Transfer API reference

整個背景傳輸 Windows 執行階段命名空間的 API 文件。

背景傳輸範例

這個範例示範 Windows 市集應用程式背景傳輸 API 省電、成本感知和彈性的行為。

 

相關主題

使用 Windows.Web.Http 連線到 HTTP 伺服器