如何使用背景工作回應系統事件 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
了解如何建立回應系統事件觸發程序的背景工作。 Windows 市集應用程式透過將輕量型自訂程式碼與 SystemTrigger 事件關聯,來維持同樣的使用者經驗,即使應用程式不在前景亦同。這個自訂程式碼會在背景工作中執行。
您必須知道的事
技術
先決條件
- 這個主題假設您有為應用程式撰寫的背景工作類別,且這個工作需要執行以回應系統所觸發的事件,例如網際網路變成可用或是使用者登入。您的應用程式不需要在鎖定畫面上,就可以執行使用 SystemTrigger 和 MaintenanceTrigger 類別登錄的背景工作。這個主題的重點在 SystemTrigger 類別。如需撰寫背景工作類別的詳細資訊,請參閱快速入門:建立並登錄背景工作。
指示
步驟 1: 建立 SystemTrigger 物件
在應用程式程式碼中,建立新的 SystemTrigger 物件。 第一個參數 triggerType 指定將啟用這個背景工作的系統事件觸發程序類型。如需事件類型清單,請參閱 SystemTriggerType。
第二個參數 OneShot 指定執行背景工作的時間為下一次系統事件發生且觸發背景工作時,或是在工作解除登錄前每次系統事件發生時。
下列程式碼指定每當網際網路變成可用時就執行背景工作:
var internetTrigger = new Windows.ApplicationModel.Background.SystemTrigger(InternetAvailable, false);
步驟 2: (選用) 新增條件
如有需要,可新增背景工作條件以控制何時將執行工作。在符合條件之前,條件會防止背景工作執行,如需詳細資訊,請參閱 如何設定執行背景工作的條件。
這個範例中,條件是設成 UserPresent,所以背景工作只會在使用者正在使用裝置 (或是當使用者變成可用) 時才會執行。如需可能的背景工作條件的清單,請參閱 SystemConditionType。
下列程式碼會將條件新增到背景工作:
var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemCondition.UserPresent);
步驟 3: 登錄背景工作
呼叫背景工作登錄函式以登錄背景工作。如需登錄背景工作的詳細資訊,請參閱如何登錄背景工作。
下列程式碼會登錄背景工作:
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Internet-based background task”;
var task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);
注意
在「Windows Phone 市集」應用程式中,在嘗試登錄任何背景工作之前,您都必須先呼叫 RequestAccessAsync。在 Windows 上,只有當一組背景工作需要應用程式在鎖定畫面上才能執行時,才需要進行這個呼叫,但是在 Windows Phone 上,登錄任何背景工作之前,都必須先呼叫一次這個方法。
為了確保您的 Windows Phone 應用程式會在您發行更新之後繼續正常執行,您必須呼叫 RemoveAccess,然後在應用程式於更新後啟動時呼叫 RequestAccessAsync。如需詳細資訊,請參閱背景工作的指導方針 (HTML)。
注意
從 Windows 8.1 開始,背景工作登錄參數都是在登錄時驗證。如果有任一個登錄參數無效,就會傳回錯誤。您的應用程式必須能夠處理背景工作登錄失敗的狀況,例如使用條件式陳述式來檢查登錄是否有錯誤,接著使用不同的參數值來重試已失敗的登錄。
備註
若要查看背景工作登錄的執行方式,請下載背景工作範例。
即使沒有將背景工作放置在鎖定畫面上,也可以執行背景工作以回應 SystemTrigger 和 MaintenanceTrigger 事件,但是您還是必須在應用程式資訊清單中宣告背景工作。在 Phone 上,您必須也要呼叫 RequestAccessAsync,才能登錄任何背景工作類型。
具有鎖定畫面功能的應用程式可以登錄會回應 TimeTrigger、PushNotificationTrigger 和 NetworkOperatorNotificationTrigger 事件的背景工作,讓這些應用程式提供與使用者進行即時通訊的功能,即使應用程式不在前景也一樣。如需詳細資訊,請參閱使用背景工作支援應用程式。