如何使用維護觸發程序 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
了解如何在裝置使用 AC 電源時,使用 MaintenanceTrigger 類別於背景中執行輕量型程式碼。
您必須知道的事
技術
先決條件
- 這個範例假設您已經有能夠在裝置使用 AC 電源時,於背景中執行以強化應用程式的輕量型程式碼。本主題著重在 MaintenanceTrigger 類別,這個類別與 SystemTrigger 類似,應用程式不必在鎖定畫面上,即可登錄 MaintenanceTrigger 背景工作。如需撰寫背景工作類別的詳細資訊,請參閱快速入門:建立並登錄背景工作。
指示
步驟 1: 建立維護觸發程序物件
建立新的 MaintenanceTrigger 物件。第二個參數 OneShot 指定維護工作是要執行一次,或是繼續定期執行。如果 OneShot 設定成 True,第一個參數 (FreshnessTime) 會指定排定背景工作之前要等待的時間 (單位:分鐘)。如果 OneShot 設定成 False,FreshnessTime 會指定背景工作的執行頻率。
注意 如果 FreshnessTime 設定為少於 15 分鐘,則嘗試登錄背景工作時會擲回例外狀況。
這個範例程式碼會建立每小時執行一次的觸發程序:
var waitIntervalMinutes = 60;
var taskTrigger = new Windows.ApplicationModel.Background.MaintenanceTrigger(waitIntervalMinutes, false);
步驟 2: (選用) 新增條件
如有需要,可新增背景工作條件以控制何時執行工作。在符合條件之前,條件會防止背景工作執行,如需詳細資訊,請參閱如何設定執行背景工作的條件。
這個範例中,條件是設成 UserPresent,讓維護只在使用者作用中 (或是使用者變成作用中時) 時才會執行。如需可能的背景工作條件的清單,請參閱 SystemConditionType。
下列程式碼會將條件新增到維護工作建立器:
var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserAway);
步驟 3: 登錄背景工作
呼叫背景工作登錄函式以登錄背景工作。如需登錄背景工作的詳細資訊,請參閱如何登錄背景工作。
下列程式碼會登錄背景工作:
var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Maintenance background task example”;
var task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
注意
在「Windows Phone 市集」應用程式中,在嘗試登錄任何背景工作之前,您都必須先呼叫 RequestAccessAsync。在 Windows 上,只有當一組背景工作需要應用程式在鎖定畫面上才能執行時,才需要進行這個呼叫,但是在 Windows Phone 上,登錄任何背景工作之前,都必須先呼叫一次這個方法。
為了確保您的 Windows Phone 應用程式會在您發行更新之後繼續正常執行,您必須呼叫 RemoveAccess,然後在應用程式於更新後啟動時呼叫 RequestAccessAsync。如需詳細資訊,請參閱背景工作的指導方針 (HTML)。
注意
從 Windows 8.1 開始,背景工作登錄參數都是在登錄時驗證。如果有任一個登錄參數無效,就會傳回錯誤。您的應用程式必須能夠處理背景工作登錄失敗的狀況,例如使用條件式陳述式來檢查登錄是否有錯誤,接著使用不同的參數值來重試已失敗的登錄。
備註
除非裝置使用 AC 電源,否則不會觸發維護觸發程序事件。
注意 如果未插入裝置,會取消所有目前正在執行且由 MaintenanceTrigger 啟動的背景工作 (cancelReason = Abort)。如果在收到背景工作已取消事件的 5 秒之內未取消背景工作,背景工作將會終止。如需詳細資訊,請參閱如何處理已取消的背景工作。