資料移轉背景工作選項

許多應用程式都需要在背景傳輸資料。 本頁面可協助您找出最符合需求的做法。

遷移應用實例

本節說明應用程式需要轉移的常見情況 資料,並協助您為客戶選擇 情境。

透過網路傳輸資料

如果轉移作業是由使用者啟動,您需要保留該使用者 且提前掌握轉移進度的資訊,採用由使用者啟動的資料轉移程序 API否則,請使用 WorkManager適當的前景服務類型

如需排定下載時間,您也可以使用 DownloadManager.DownloadManager 會管理應用程式的 以及在故障後重新嘗試下載、裝置重新啟動 以及網路連線的變化不過,DownloadManager 並未提供 偵錯及測試 WorkManagerJobScheduler

將資料移入或移出本機裝置

使用特定 API (例如隨附裝置) 管理員);否則,請使用 connectedDevice 前景 服務

完成簡短而重要的任務

使用 shortService 前景服務

處理檔案,例如將資料移入或移出 SD 卡、調整內容大小,或是加密或解密資料

如果工作能在三分鐘內完成,請使用 shortService 前景服務。否則,請使用 WorkManager

使用 User-Initiated Data Transfer Jobs API

如果您的應用程式需要將資料轉移到遠端伺服器,建議您使用 新的 User-Initiated Data Transfer Jobs API。如果開發人員 以下為 true:

  • 使用者已開始轉移資料
  • 您需要通知使用者資料轉移進度通知
  • 如果系統中斷轉移作業,會對使用者體驗造成負面影響

如不符合上述任一條件,則應使用 WorkManager

舉例來說,媒體應用程式可能會讓使用者下載專輯在本機播放。如果 使用者想要下載播放清單並立即播放,建議您使用 User-Initiated Data Transfer Jobs API。另一方面,如果使用者希望 已下載播放清單,以便在無使用者的情況下定期在背景更新 此時 WorkManager 會是更好的選擇

詳情請參閱將前景服務遷移至 User-Initiated Data Transfer Jobs

使用 WorkManager

在大多數情況下,需要安排工作時間時,WorkManager 是最佳選擇。 設計工作時,必須讓工作能夠中斷或延遲 由系統執行詳情請參閱 WorkManager 說明文件

從前景改用 Pixel 時,下列附註可能對您有所幫助 將服務傳送至 WorkManager

  • 若您希望盡快執行該工作,可以排定 加快工作要求速度。如果您用的是 安排工作時間,以回應廣播、精確鬧鐘或 高優先順序 FCM 訊息
  • 如果您需要定期執行工作,可以安排定期執行 工作。定期工作要求可讓您「大致」指定 工作仍會執行,但不保證能在特定時間執行。如此一來 排定不同應用程式的工作要求,在需求之間取得平衡 在裝置上。
  • 您必須定義工作限制條件,指定正確的值 執行工作舉例來說,如果應用程式需要 可以指定工作執行時,應執行 裝置正在充電並連上非計量付費網路。WorkManager 可以 然後在平衡系統負載的時間執行工作。
  • WorkManager 可以視需要取消並重試工作。例如: 使用者可能會在工作執行期間關閉裝置;系統可以 並在裝置恢復運作時重試工作。確保設計 並測試工作流程,確認取消重試週期可正常運作 正確做法。

使用更具體的前景服務類型

如果您無法改成其他執行背景工作的方式, 就需要使用前景服務在這種情況下,您可以找到 使用的服務類型來取代 dataSync。由於您的程式碼已使用 前景服務,這項遷移作業相當簡單。您只需選擇要使用的儲存空間 適當的前景服務類型,並確保您的應用程式符合 服務需求

一如以往,考慮使用前景服務時, 思考是否有更符合使用需求的替代 API 確認是否屬於此情況

使用短期服務前景服務

如果您的應用程式需要執行短期的重要工作,即 shortService 前景 這或許是最佳選擇以下是一些shortService 下列可能是合適的前景服務:

  • 使用者開始執行特定動作 (例如將資料同步到伺服器), 確保作業已經完成,即使使用者立即將 移到背景
  • 正在將記憶體內資訊儲存至永久儲存空間。
  • 加密或解密資訊。

詳情請參閱 shortService 說明文件

使用已連結裝置的前景服務

如要將資料轉移到另一部本機裝置,建議使用 connectedDevice 前景服務。以下是一些常見情況 需具備的操作:

  • 透過藍牙配件 (例如耳機或智慧手錶) 通訊
  • 透過 USB 連線、NFC 或本地網際網路連線

不過,在這種情況下,您或許可以使用隨附裝置 Manager 能與裝置連線,而不是使用前景服務。 一如往常,如果某個特殊用途 API 適用於您的用途 這通常會比前景服務更好。

其他資源

如要進一步瞭解這項前景服務異動,請參閱以下內容 其他資源: