資料移轉背景工作選項

Many apps need to transfer data in the background. This guide outlines choices for reliable background data transfer, and provides examples for how to implement them.

常見的背景資料傳輸情況

本節說明應用程式需要將資料傳輸至裝置或從裝置傳輸資料的一些常見情況,並協助您根據情況選擇合適的工具。

選擇 API 時,請考量下列問題:

  • 轉移作業是否由使用者啟動?
  • 是否有現有 API 可處理這項轉移作業?
  • 工作是否需要立即執行?
選項 使用時機 時間 範例

WorkManager

排定執行時間不到 10 分鐘的工作,且應在應用程式不可見時執行。

可延遲:也可以根據限制條件調整

立即:如果工作需要立即執行,請使用 setExpedited

定期將資料與伺服器同步

在網路上傳或下載媒體。背景啟動 (非使用者啟動)

User-Initiated Data Transfer Job

使用者觸發資料轉移作業時,您需要讓使用者瞭解轉移進度。

由使用者啟動 (例如點選按鈕) - 立即開始

上傳相片、下載檔案

前景服務

適用於短期、重要工作,或無法使用 WorkManager 的情況。通知會向使用者說明轉移進度。

立即開始

connectedDevice:與已連結裝置同步處理資料

shortService:檔案處理時間少於 3 分鐘

mediaProcessing:編碼或解碼媒體檔案

特定 API

如果該特定作業有專屬的錯誤訊息,請使用該訊息。可帶來許多好處,例如最佳化效能和改善系統整合。

不定

將資料與已連結的裝置保持同步

如果您的情境未列在常見情境中,請參閱下列章節,找出最適合您用途的 API。WorkManager 可能很適合。

使用使用者啟動的資料移轉作業類型

如果應用程式需要將資料傳輸至遠端伺服器,建議使用由使用者啟動的資料移轉工作。如果符合下列條件,就適合使用這類工作:

  • 使用者開始轉移資料
  • 您必須讓使用者隨時掌握資料轉移進度
  • 如果系統中斷轉移作業,會對使用者體驗造成負面影響

如果無法滿足上述任一條件,請改用 WorkManager

舉例來說,媒體應用程式可能會允許使用者下載專輯,以便在裝置上播放。如果使用者想下載播放清單並立即播放,您可能需要使用使用者啟動的資料轉移工作類型。另一方面,如果使用者希望下載的播放清單在背景定期更新,且不需要使用者啟動,則 WorkManager 會是較好的選擇。

如要進一步瞭解如何建立及執行使用者啟動的資料移轉工作,請參閱使用者啟動的資料移轉工作說明文件。

使用 WorkManager 傳輸資料

在大多數情況下,需要排定工作時,WorkManager 是最佳選擇。請注意,您必須設計工作,讓系統可以中斷或延後執行。詳情請參閱 WorkManager 說明文件

使用 WorkManager 進行背景資料移轉時,請注意下列事項:

  • 如需盡快執行工作,可以排定加急工作要求。如果您要排定工作時間,以回應廣播、精確鬧鐘或高優先順序 FCM 訊息,這個選項就特別實用。
  • 如需定期執行工作,可以排定週期性工作。定期工作要求可讓您大致指定工作執行頻率,但不保證特定時間。這樣一來,系統就能排定不同應用程式的工作要求,平衡裝置上的需求。
  • 您應定義工作限制條件,指定執行工作的適當情況。舉例來說,如果應用程式需要下載非緊急資源,您可以指定工作在裝置充電並連上非計量付費網路時執行。WorkManager 就能在系統負載平衡時執行工作。
  • WorkManager 可視需要取消及重試工作。舉例來說,使用者可能會在工作執行期間關閉裝置,而系統會在裝置再次可用時重試工作。請務必設計並測試工作流程,確保取消並重試的週期正常運作。
  • 長時間執行的工作站 (前景服務):WorkManager 可為應用程式建立前景服務,支援執行時間超過 10 分鐘的工作。這表示這類工作站會受到與前景服務和工作相同的限制,包括從背景啟動的限制和執行時間限制 (系統會重新排定執行時間超過 10 分鐘的工作)。

JobScheduler 是排程背景工作的替代選項。與 WorkManager 相比,您需要進行更多設定,但優點是可以使用 WorkManager 目前沒有的 API,例如 setPrefetchsetUserInitiatedgetPendingJobReasons

使用特定 API

如有可用的特定 API (例如隨附裝置管理工具),請使用該 API;否則請使用connectedDevice前景服務

找出特定用途的 API

這個提示會要求用於資料移轉工作的特定 API。


I want to transfer data from an Android mobile device to [device_type]. Is there a specific API available?

使用 AI 提示

AI 提示詞僅供在 Android Studio 的 Gemini 中使用。

如要進一步瞭解 Gemini 版 Android Studio,請前往:https://developer.android.com/studio/gemini/overview

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

如果 WorkManager 和 JobScheduler 不適合特定背景工作,您可能需要使用前景服務。

一如往常,考慮使用前景服務時,請先評估是否有更適合您用途的替代 API

使用短時間前景服務

如果應用程式需要執行短時間的重大工作,shortService前景服務可能是最佳選擇。以下列舉幾種可能適合使用shortService 前景服務的情況:

  • 使用者啟動動作 (例如將資料同步至伺服器),您希望即使使用者立即將應用程式傳送至背景,作業也能完成。
  • 將記憶體內資訊儲存至永久儲存空間。
  • 加密或解密資訊。

如需完整資訊,請參閱 shortService 說明文件

使用連結裝置前景服務

如要將資料轉移至其他本機裝置,建議使用connectedDevice前景服務。以下列舉幾種常見情況,您可能需要這麼做:

  • 與藍牙配件通訊,例如耳機或智慧手錶
  • 透過 USB 連線、NFC 或本機網際網路連線,將資料轉移至本機連線的裝置

不過,在這些情況下,您或許可以使用隨附裝置管理員連線至裝置,而不必使用前景服務。與往常一樣,如果您的用途有專用 API 可用,通常會比使用前景服務更合適。

使用新的媒體處理前景服務

如需處理媒體資料,可以使用 mediaProcessing 前景服務。如果應用程式指定 Android 15 以上版本,即可使用這類服務。舉例來說,如果應用程式需要將媒體從一種格式轉碼為另一種格式才能播放,就適合使用這類服務。詳情請參閱媒體處理前景服務說明文件

其他資源