使用背景工作支援應用程式 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
本節中的主題說明如何藉由回應含有背景工作的觸發程序,在背景執行您的輕量型程式碼。 背景工作是作業系統在背景執行的不同 JavaScript 檔案。您可以使用背景工作在應用程式暫停或未執行時提供功能。在 JavaScript 中,您也可以在計時器執行背景工作。
背景工作使用 Windows.UI.WebUI.WebUIBackgroundTaskInstance 命名空間來取得關於背景工作目前的執行個體資訊。您可以使用 BackgroundTaskBuilder 物件來登錄背景工作。在登錄背景工作時,背景工作 JavaScript 檔案會指定為進入點。
若要快速開始使用背景工作,請參閱快速入門:建立並登錄背景工作。
系統事件的背景工作
您的應用程式可以藉由使用 SystemTrigger 登錄背景工作的方式,回應系統產生的事件。應用程式可以使用下列任何系統事件觸發程序 (於 SystemTriggerType 中定義),而不需要放置到鎖定畫面上。
觸發程序名稱 | 說明 |
---|---|
InternetAvailable |
網際網路變成可用。 |
NetworkStateChange |
網路變更,例如發生費用或連線變更。 |
OnlineIdConnectedStateChange |
與帳戶關聯的線上識別碼變更。 |
SmsReceived |
安裝的行動式寬頻裝置收到新的 SMS 訊息。 |
TimeZoneChange |
裝置時區變更 (例如,系統因為日光節約時間而調整時鐘)。 |
如需詳細資料,請參閱如何使用背景工作回應系統事件。
背景工作的條件
您可以新增條件來控制背景工作執行的時間,即使是觸發後也可以。觸發之後,背景工作會等到所有條件都符合才執行。以下為可以使用的條件 (以 SystemConditionType 列舉表示)。
條件名稱 | 說明 |
---|---|
InternetAvailable | 網際網路必須為可用。 |
InternetNotAvailable | 網際網路必須為無法使用。 |
SessionConnected | 工作階段必須已連線。 |
SessionDisconnected | 工作階段必須已中斷連線。 |
如需詳細資訊,請參閱如何設定執行背景工作的條件。
應用程式資訊清單需求
應用程式必須先在應用程式資訊清單中宣告,才能成功登錄背景工作。如需詳細資訊,請參閱如何在應用程式資訊清單中宣告背景工作。
具有鎖定畫面功能之應用程式的背景工作
應用程式可以放到鎖定畫面上,以便讓使用者一眼就能看見即時資訊。下列即時觸發程序可以針對位於鎖定畫面的應用程式,在背景執行輕量型自訂程式碼:
控制通道: 背景工作可以保持連線,並使用 ControlChannelTrigger 在控制通道上接收訊息。如需詳細資訊,請參閱如何使用控制通道觸發程序。(請注意,控制通道背景工作只能在 C# 或 C++ 中實作)。Windows Phone 不支援 ControlChannelTrigger。
計時器: 背景工作最快可以每 15 分鐘執行一次,而且可以使用 TimeTrigger 來設定在特定時間執行。如需詳細資訊,請參閱如何在計時器上執行背景工作。
推播通知: 背景工作會回應 PushNotificationTrigger 以接收原始推播通知。如需詳細資訊,請參閱如何接收原始通知。
注意 僅限「Windows 市集」應用程式。使用者必須將您的應用程式放置在鎖定畫面上,應用程式才能使用這些背景工作。應用程式可以藉由呼叫 RequestAccessAsync 來要求存取鎖定畫面。這會顯示一個對話方塊,詢問使用者要「允許」或「不允許」您的應用程式出現在鎖定畫面上。應用程式只能要求存取鎖定畫面一次;對 RequestAccessAsync 的任何後續呼叫將會被忽略。
注意
「Windows Phone 市集」應用程式可以使用所有支援的背景觸發程序,而不用釘選到鎖定畫面。不過,Phone 應用程式在登錄任何背景觸發程序類型之前,都必須先呼叫 RequestAccessAsync。
為了確保您的 Windows Phone 應用程式會在您發行更新之後繼續正常執行,您必須呼叫 RemoveAccess,然後在應用程式於更新後啟動時呼叫 RequestAccessAsync。如需詳細資訊,請參閱背景工作的指導方針 (Windows 執行階段應用程式)。
具有鎖定畫面功能之應用程式的系統事件觸發程序
注意 SystemTriggerType 列舉包含下列系統事件觸發程序,只有具有鎖定畫面功能的應用程式才能使用。應用程式必須先放置到鎖定畫面上,才能使用這些系統事件觸發程序登錄背景工作。
觸發程序名稱 | 說明 |
---|---|
UserPresent |
背景工作會在使用者存在時觸發。 |
UserAway |
背景工作會在使用者不在時觸發。 |
ControlChannelReset |
背景工作會在控制通道重設時觸發。 |
SessionConnected |
背景工作會在工作階段連線時觸發。 |
下列系統事件觸發程序也可以用於具有鎖定畫面功能的應用程式。這些觸發程序即使應用程式不在鎖定畫面上也可以登錄,因此能夠辨識使用者何時將應用程式移入或移出鎖定畫面。
觸發程序名稱 | 說明 |
---|---|
LockScreenApplicationAdded |
將 app 磚新增到鎖定畫面。 |
LockScreenApplicationRemoved |
從鎖定畫面移除 app 磚。 |
背景工作資源限制
背景工作為輕量型。將背景執行降至最低,可以確保使用者獲得前景 app 與電池壽命的最佳體驗。這是透過將資源限制套用至背景工作來強制執行:
CPU 使用量限制如下。
CPU 使用量配額 重新整理時間 Windows 應用程式不在鎖定畫面上 1 秒
2 小時
Windows 應用程式在鎖定畫面上 2 秒
15 分鐘
Windows Phone 應用程式 2 秒
15 分鐘
以電池 (DC 電源) 執行時,背景工作同樣有網路數據使用量限制。這項功能是限制網路介面所使用的電量,因此它會隨裝置與網路環境而異 - 但是可加以評估。
下表說明網路數據輸送量,假設有一個資源受限的 WiFi 網路,其平均數據輸送量為 1Mbps。若要評估正確的限制,請乘以連線每秒的平均 Mb (Mbps)。例如,應用程式位於鎖定畫面上時,以 10Mbps WiFi 連線速度每 2 小時可以使用 25 MB 的數據。範例 WiFi 介面會假設最少的干擾。
重新整理期間 15 分鐘 2 小時 每天 數據限制 (在鎖定畫面上) 0.469 MB 不提供 45 MB 數據限制 (不在鎖定畫面上) 不提供 0.625 MB 7.5 MB 注意 裝置使用 AC 電源時,網路數據使用量限制會提高,但是 CPU 使用量配額仍然適用。同樣地,使用者在前景與應用程式互動時,對應用程式背景工作的 CPU 和網路資源限制會暫停。
Windows Phone 市集應用程式的其他背景工作資源限制
除了上節所述的資源限制之外,「Windows Phone 市集」應用程式的背景工作還包含下列限制。
記憶體限制
因為電話尺寸的資源限制,特別是低記憶體裝置,Windows Phone 應用程式的背景工作有記憶體限制,決定背景工作可以使用的最大記憶體量。如果您的背景工作超過此限制,就會立即終止。記憶體配置取決於背景工作的類型,以及執行工作之裝置上的總系統記憶體。開發及測試應用程式時應當考慮這些限制。您也可以使用 MemoryManager API 查詢目前的記憶體使用量及限制,以便在執行階段調整使用量。下表針對裝置上不同的總系統記憶體量,列出指定背景工作類型的記憶體上限 (以 MB 為單位)。
背景工作類型 | 512 MB | 1 GB | 2 GB 或更大 |
---|---|---|---|
定位 | 16 | 30 | 40 |
藍牙 | 16 | 16 | 16 |
服務完成 | 10 | 10 | 10 |
其他背景工作 | 16 | 30 | 40 |
偵錯時的限制 | 30 | 40 | 50 |
針對低記憶體裝置背景工作的應用程式個別裝置限制
在只有 512 MB 記憶體的電話上,會限制可安裝在裝置上的應用程式數量以及任何指定時間可使用背景工作的應用程式數量。如果超過這個數字,對 RequestAccessAsync 的呼叫 (若要在 Windows Phone 上登錄所有背景工具,就需要此呼叫) 就會失敗。
電池省電功能
Windows Phone 上的電池省電功能啟用時,只要裝置沒有連接外部電源,或是電池電量低於指定的剩餘電量時,它就會阻止背景工作執行。但是不會阻止您登錄背景工作。
維護觸發程序
您的應用程式在使用維護觸發程序的情況下,最快可以每 15 分鐘執行工作一次。維護工作只會在裝置使用 AC 電源時執行,而不需要放置到鎖定畫面上。如需詳細資訊,請參閱如何使用維護觸發程序。
感應器和裝置的背景工作
您的 app 可以使用 DeviceUseTrigger 類別,從背景工作存取感應器和週邊裝置。您可以在長時間執行的操作使用這個觸發程序,例如資料同步或監控。和系統事件的工作不同,DeviceUseTrigger 工作只能在您的應用程式於前景中執行時觸發,而且不能設定條件。視執行的位置而定 (電腦或手機),DeviceUseTrigger 背景工作支援不同的 API,且受限於不同的原則。若要深入了解這些差異,請參閱從背景工作存取感應器和裝置。
部分重要裝置操作 (例如,長時間執行韌體更新) 無法使用 DeviceUseTrigger 來執行。這類操作只能在電腦上執行,而且只能由使用 DeviceServicingTrigger 且具有特殊權限的 app 來執行。「具有特殊權限的 app」**是裝置製造商授權執行這些操作的 app。裝置中繼資料可用來指定要將哪個應用程式 (如果有的話) 指定為裝置的具有特殊權限的應用程式。如需詳細資訊,請參閱 Windows 市集裝置應用程式的裝置同步和更新。
管理背景工作
背景工作可使用事件與本機存放裝置向您的 app 報告進度、完成與取消。您的 app 也可抓取由背景工作擲回的例外狀況,並在 app 更新期間管理背景工作登錄。如需詳細資訊,請參閱:
相關主題
在 Windows 8 中執行多工的概念指引
鎖定畫面的 UI 指導方針
相關的背景工作指引