共用方式為


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

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

建立較佳的背景工作以支援應用程式,並確保您的應用程式符合執行背景工作的需求。

背景工作指引

開發背景工作時以及在發佈應用程式之前,請考慮下列指引。

關閉背景工作: 請記得,背景工作完成時必須呼叫 close() 方法。如果背景工作並未自行關閉,則即使背景工作已完成或已取消,執行背景工作的處理程序仍然會繼續耗用記憶體和電池使用時間。

CPU 與網路配額: 請勿超過套用至背景工作的 CPU 配額或網路數據使用量配額。背景工作應該是輕量型,才能節省電池使用時間並為前景應用程式提供較佳的使用者經驗。請參閱使用背景工作支援應用程式,以了解套用至背景工作的資源限制。

管理背景工作: 您的應用程式應該取得已登錄的背景工作清單,登錄進度與完成處理常式,以及適當地處理這些事件。您的背景工作應該報告進度、取消和完成。請參閱如何取得擱置中的背景工作清單如何處理已取消的背景工作以及如何監視背景工作進度和完成

更新應用程式資訊清單: 在應用程式資訊清單中宣告每個背景工作,以及它所使用的觸發程序類型。否則您的應用程式將無法在執行階段登錄背景工作。如需詳細資訊,請參閱如何在應用程式資訊清單中宣告背景工作

準備應用程式更新: 如果您的應用程式會進行更新,請建立並登錄 ServicingComplete 背景工作 (請參閱 SystemTriggerType),以協助前景執行環境之外可能需要的應用程式執行更新。

Windows 上具有鎖定畫面功能之應用程式的背景工作: 鎖定畫面是共用的資源。一次只能在鎖定畫面上放置七個應用程式,而且只有一個可以顯示寬形磚。您的應用程式可以使用 RequestAccessAsync 方法來要求鎖定畫面存取權,並且確定您的應用程式不必在鎖定畫面上仍然可以運作,以提供良好的使用者經驗。未放置在鎖定畫面上的應用程式仍然可以更新磚、更新徽章、傳送通知以及登錄系統事件觸發程序。就算使用者未將應用程式放置在鎖定畫面上,當應用程式在前景時的使用者經驗也不應該遭到中斷。

請參閱鎖定畫面概觀以了解鎖定畫面是否適合您的應用程式使用。

要求執行 Windows Phone 市集應用程式的背景工作:

「Windows Phone 市集」應用程式可以執行所有支援的工作類型,而不用釘選到鎖定畫面。不過,您的應用程式必須先呼叫 RequestAccessAsync,才能登錄任何背景工作類型。如果系統上具有背景工作的應用程式數量超過上限,或是使用者在裝置設定中明確拒絕您應用程式的背景工作權限,則這個方法會傳回 BackgroundAccessStatus.Denied

就「Windows Phone 市集」應用程式而言,如果您的應用程式將會更新,當您的應用程式在更新後啟動時,您必須呼叫 RemoveAccess,然後呼叫 RequestAccessAsync。若要判斷您的應用程式何時已經更新,您應該使用儲存在本機設定中的值,來追蹤您應用程式的版本號碼。當您的應用程式啟動時,請檢查您應用程式的版本,如果該版本比本機設定中的版本新,便呼叫 RemoveAccessRequestAccessAsync。若要這樣做,請新增類似以下的程式碼,然後從您應用程式的啟動事件處理常式呼叫它。

function checkAppVersion() {
    var localSettings = Windows.Storage.ApplicationData.current.localSettings;
    var pkgVersion = Windows.ApplicationModel.Package.current.id.version;
    var backgroundExecMgr = Windows.ApplicationModel.Background.BackgroundExecutionManager;

    var appVersion = pkgVersion.build + "." +
                        pkgVersion.major + "." +
                        pkgVersion.minor + "." +
                        pkgVersion.revision;

    if (localSettings.values["appVersion"] != appVersion)
    {
        // Our app has been updated
        localSettings.values["appVersion"] = appVersion;

        // Call removeAccess
        backgroundExecMgr.removeAccess();
    }
        
    backgroundExecMgr.requestAccessAsync();
}

背景工作檢查清單

下列檢查清單適用於所有背景工作。

  • 將背景工作與正確的觸發程序關聯。

  • 新增條件以協助確認背景工作順利執行。

  • 處理背景工作進度、完成和取消。

  • 請勿顯示背景工作快顯通知、磚以及徽章更新以外的 UI。

  • 背景工作完成執行時呼叫 close()。

  • 使用永久性存放裝置在背景工作和應用程式之間分享資料。

  • 在應用程式資訊清單中宣告每個背景工作,以及它所使用的觸發程序類型。確認進入點與觸發程序類型是否正確。

  • 撰寫短暫的背景工作。不要超過使用背景工作支援應用程式中顯示的 CPU 或網路配額。

  • 請勿仰賴背景工作的使用者互動。

  • 檢查背景工作登錄是否有錯誤。在適當狀況下,嘗試以不同的參數值再次登錄背景工作。

Windows:具有鎖定畫面功能之應用程式的背景工作檢查清單

針對能夠位於鎖定畫面上的應用程式開發背景工作時,請遵循這個指導方針。遵循鎖定畫面磚的指導方針和檢查清單中的指導方針。

  • 將您的應用程式開發成具有鎖定畫面功能的應用程式之前,請先確定應用程式是否一定要位於鎖定畫面上。如需詳細資訊,請參閱鎖定畫面概觀

  • 確認應用程式不在鎖定畫面上仍然可運作。

  • 使用 RequestAccessAsync 方法要求鎖定畫面存取權。

  • 包括使用 TimeTrigger 登錄的背景工作,並在應用程式資訊清單中宣告它。確認進入點與觸發程序類型是否正確。 這是認證的必要條件,而且可以讓使用者在鎖定畫面上放置應用程式。

  • 撰寫短暫的背景工作,即使是用於具有鎖定畫面功能的應用程式。不要超過使用背景工作支援應用程式中顯示的 CPU 或網路配額。

  • 就「Windows Phone 市集」應用程式而言,如果裝置的記憶體不足,可能會在沒有警告也沒有引發 OnCanceled 事件的情況下,就終止背景工作。這有助於確保前景應用程式的使用者體驗。您的背景工作應該要設計成能夠處理這種情況。

相關主題

其他相關的背景工作主題

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

如何登錄背景工作

如何偵錯背景工作

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

如何在 Windows 市集應用程式觸發暫停、繼續以及背景事件 (偵錯時)

其他相關的鎖定畫面指引

鎖定畫面概觀

在鎖定畫面顯示磚

鎖定畫面磚的指導方針和檢查清單