共用方式為


如何設定執行背景工作的條件 (HTML)

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

了解如何設定執行背景工作的條件,只會在合適時機協助執行它。 有時,除了會觸發工作的事件之外,背景工作還需要符合某些條件才能順利執行。您可以在登錄背景工作時由 SystemConditionType 指定一或多個條件。在引發觸發程序之後,會檢查條件,將背景工作排入佇列,但是必 須等到符合所有必要的條件之後才會執行它。

將條件放在背景工件可以避免執行不必要的工作,以延長電池壽命和 CPU 執行階段。例如,如果背景工作在計時器上執行,並且需要網際網路連線,則登錄工作之前,請將 InternetAvailable 條件新增到 TaskBuilder。這樣可以透過讓工作在計時器已經過且網際網路可用時執行,以協助防止工作不必要地使用系統資源與電池使用時間。

您必須知道的事

技術

先決條件

  • 這個主題假設您已經有和應用程式相關聯的背景工作,而且應用程式也已經包含了建立名為 taskBuilderBackgroundTaskBuilder 物件。

指示

步驟 1: 建立 SystemCondition 物件

新增條件之前,建立 SystemCondition 物件,代表背景工作執行時必須生效的條件。建構函式中,透過提供 SystemConditionType 列舉數值的方式,指定必須滿足的條件。

下列程式碼會建立 SystemCondition 物件,以指定網際網路可用性做為條件需求:

var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);

步驟 2: 將 SystemCondition 物件新增到背景工作

如果要新增條件,請呼叫 BackgroundTaskBuilder 物件上的 AddCondition 方法,並將 SystemCondition 物件傳給它。

下列程式碼使用 TaskBuilder 登錄 InternetAvailable 背景工作條件:

taskBuilder.AddCondition(internetCondition);

步驟 3: 登錄背景工作

現在您可以使用 Register 方法來登錄背景工作,而且只有在滿足指定條件時,工作才會啟動。

下列程式碼會登錄工作並儲存產生的 BackgroundTaskRegistration 物件:


var task = taskBuilder.Register();

注意  

在「Windows Phone 市集」應用程式中,在嘗試登錄任何背景工作之前,您都必須先呼叫 RequestAccessAsync。在 Windows 上,只有當一組背景工作需要應用程式在鎖定畫面上才能執行時,才需要進行這個呼叫,但是在 Windows Phone 上,登錄任何背景工作之前,都必須先呼叫一次這個方法。

為了確保您的 Windows Phone 應用程式會在您發行更新之後繼續正常執行,您必須呼叫 RemoveAccess,然後在應用程式於更新後啟動時呼叫 RequestAccessAsync。如需詳細資訊,請參閱背景工作的指導方針 (HTML)

注意  

從 Windows 8.1 開始,背景工作登錄參數都是在登錄時驗證。如果有任一個登錄參數無效,就會傳回錯誤。您的應用程式必須能夠處理背景工作登錄失敗的狀況,例如使用條件式陳述式來檢查登錄是否有錯誤,接著使用不同的參數值來重試已失敗的登錄。

 

步驟 4: 在背景工作上放置多個條件

若要新增多個條件,您的應用程式必須多次呼叫 AddCondition 方法。這些呼叫必須在工作登錄生效之前發生。

注意  請注意,不要將衝突的條件新增到背景工作。

 

下列程式碼片段會在建立並登錄背景工作的內容中顯示多個條件:

var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);

var recurringTaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();

recurringTaskBuilder.Name = "Hourly background task for YourApp";
recurringTaskBuilder.TaskEntryPoint = "js\\ExampleBackgroundTask.js";
recurringTaskBuilder.SetTrigger(hourlytrigger);

//
// Begin adding conditions.
//
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);

taskBuilder.AddCondition(userCondition);
taskBuilder.AddCondition(internetCondition);

//
// Done adding conditions. Now we register the background task.
//
var task = recurringTaskBuilder.Register();

備註

注意  為背景工作挑選正確條件,讓工作只在需要時才執行,而且不會在工作無法運作時執行。如需不同背景工作條件的說明,請參閱 SystemConditionType

相關主題

快速入門:建立並登錄背景工作

如何登錄背景工作

如何使用背景工作回應系統事件

如何使用維護觸發程序

如何在應用程式資訊清單中宣告背景工作

如何偵錯背景工作

背景工作的指導方針和檢查清單