資料移轉背景工作選項

許多應用程式都需要在背景傳輸資料。本指南將概略說明可靠的背景資料移轉選項,並提供實作方式的範例。

常見的背景資料傳輸情境

本節說明應用程式需要從裝置傳送或接收資料的常見情況,並協助您選擇適合情況的工具。

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

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

WorkManager

如要排定執行時間少於 10 分鐘的工作,且應在應用程式未顯示時執行。

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

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

定期將資料與伺服器同步

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

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

當資料轉移作業由使用者觸發時,您需要持續向使用者告知轉移進度。

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

上傳相片、下載檔案

前景服務

如需執行短時間內必須完成的重要工作,或是無法使用 WorkManager 的情況。通知會向使用者告知轉移作業的進度。

立即開始

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

shortService:檔案處理時間不到 3 分鐘

mediaProcessing:編碼或解碼媒體檔案

特定 API

如果該特定作業有一個,請使用該作業。可帶來效能最佳化和系統整合等好處。

不定

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

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

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

如果應用程式需要將資料移轉至遠端伺服器,建議您使用由使用者啟動的資料移轉工作。在下列情況下,這類工作類型最適合:

  • 使用者開始資料移轉
  • 您必須持續通知使用者資料移轉進度
  • 如果系統中斷轉移作業,會對使用者體驗造成不利影響

如果不符合上述任一條件,請改用 WorkManager

舉例來說,媒體應用程式可能會讓使用者下載專輯並在本機播放。如果使用者想下載播放清單並立即播放,建議您使用使用者啟動的資料轉移工作類型。另一方面,如果使用者希望下載的播放清單在背景定期更新,而無須使用者啟動,則 WorkManager 會是較佳的選擇。

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

使用 WorkManager 進行資料移轉

在大多數情況下,如果您需要安排工作,WorkManager 是最佳選擇。請注意,您必須以可讓系統中斷或延遲的工作方式設計工作。詳情請參閱 WorkManager 說明文件

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

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

如要進一步瞭解 Studio 中的 Gemini,請前往以下網址:https://developer.android.com/studio/preview/gemini

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

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

如往常一樣,如果您考慮使用前景服務,請考量是否有更適合您用途的其他 API

使用短服務前景服務

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

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

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

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

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

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

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

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

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

其他資源