多くの場合、dataSync
フォアグラウンド サービスよりも適切な代替手段があります。このドキュメントでは、ユースケースに最適な代替手段を見つける方法について説明します。
移行のユースケース
このセクションでは、アプリが現在 dataSync
フォアグラウンド サービスを使用する一般的な状況と、推奨される代替方法について説明します。
- ネットワーク経由のデータ転送
- 転送がユーザーによって開始され、転送の進行状況をユーザーに常に知らせる必要がある場合は、ユーザーが開始したデータ転送 API を使用します。それ以外の場合は、WorkManager を使用してください。
- ローカル デバイスとのデータの転送
- 特定の API がある場合は、それを使用します(コンパニオン デバイス マネージャーなど)。それ以外の場合は、
connectedDevice
フォアグラウンド サービスを使用します。 - メディアのコード変換
- 新しいタイプのフォアグラウンド サービス
mediaProcessing
を使用。 - 短く重要なタスクを完了する
shortService
フォアグラウンド サービスを使用する。- ファイルの処理(SD カードとのデータ転送、コンテンツのサイズ変更、データの暗号化または復号など)
- タスクが 3 分未満で完了できる場合は、
shortService
フォアグラウンド サービスを使用します。それ以外の場合は、WorkManager を使用します。
UIDT API を使用する
アプリがリモート サーバーにデータを転送する必要がある場合は、新しいユーザー開始型データ転送 API を使用することをおすすめします。これらの API は、次の条件に当てはまる場合に適しています。
- ユーザーがデータの転送を開始しました
- データ移行の進行状況をユーザーに常に通知する必要がある
- システムが転送を中断すると、ユーザー エクスペリエンスが損なわれる
これらの条件のいずれかが満たされない場合は、代わりに WorkManager を使用してください。
たとえば、メディアアプリでは、ユーザーがアルバムをダウンロードしてローカルに再生できる場合があります。ユーザーがプレイリストをダウンロードしてすぐに再生したい場合は、UIDT API の使用をおすすめします。一方、ダウンロードしたプレイリストをユーザーの操作なしでバックグラウンドで定期的に更新する場合は、WorkManager を使用することをおすすめします。
詳細については、フォアグラウンド サービスをユーザーが開始するデータ転送ジョブに移行するをご覧ください。
WorkManager を使用する
ほとんどの場合、処理のスケジュールを設定する必要がある場合は WorkManager が最適です。タスクは、システムによって中断または延期できるように設計する必要があります。詳細については、WorkManager のドキュメントをご覧ください。
フォアグラウンド サービスから WorkManager に移行する際は、次の点に注意してください。
- できるだけ早く処理を実行する必要がある場合は、優先処理リクエストをスケジュールできます。このオプションは、ブロードキャスト、正確なアラーム、または優先度の高い FCM メッセージに応じて処理をスケジュールする場合に特に便利です。
- 処理を定期的に実行する必要がある場合は、定期的な処理をスケジュールできます。定期的な処理リクエストでは、処理の実行頻度を大まかに指定できますが、具体的な時間は保証されません。これにより、システムはさまざまなアプリからの作業リクエストをスケジュールし、デバイスに対する需要のバランスを取ることができます。
- 処理の制約を定義して、ジョブを実行する適切な状況を指定する必要があります。たとえば、緊急性の低いリソースをダウンロードする必要がある場合は、デバイスが充電中で定額制ネットワークに接続している間にジョブを実行するように指定できます。これにより、WorkManager はシステムの負荷が分散された時点でジョブを実行できます。
- WorkManager は、必要に応じてジョブのキャンセルや再試行を自由に行うことができます。たとえば、ジョブの実行中にユーザーがデバイスの電源をオフにした場合、デバイスが再び使用可能になると、システムはジョブを再試行できます。ワークフローを設計してテストし、キャンセルと再試行のサイクルが適切に機能することを確認してください。
より具体的なフォアグラウンド サービス タイプを使用する
バックグラウンド処理を行う別の方法に切り替えられない場合でも、フォアグラウンド サービスを使用する必要があります。その場合は、dataSync
の代わりに適切なサービスタイプを使用する必要があります。コードですでにフォアグラウンド サービスを使用しているため、この移行は簡単です。適切なフォアグラウンド サービス タイプを選択し、アプリがそのサービスの要件を満たしていることを確認するだけです。
フォアグラウンド サービスの使用を検討する際は、通常どおり、ユースケースに合ったより適切な代替 API があるかどうかを検討する必要があります。
短いサービスのフォアグラウンド サービスを使用する
アプリで短時間の重要なタスクを実行する必要がある場合は、shortService
フォアグラウンド サービスをおすすめします。次のような状況では、shortService
フォアグラウンド サービスが適切です。
- ユーザーがアクション(サーバーへのデータの同期など)を開始し、ユーザーがすぐにアプリをバックグラウンドに送信した場合でも、オペレーションを確実に終了させたい。
- メモリ内情報を永続ストレージに保存する。
- 情報を暗号化または復号する。
詳細については、shortService
のドキュメントをご覧ください。
接続済みデバイスのフォアグラウンド サービスを使用する
別のローカル デバイスにデータを転送する必要がある場合は、connectedDevice
フォアグラウンド サービスを使用できます。この操作が必要になる一般的な状況は次のとおりです。
- ヘッドフォンやスマートウォッチなどの Bluetooth アクセサリとの通信
- USB 接続、NFC、ローカル インターネット接続による、ローカル接続されたデバイスへのデータ転送
ただし、このような状況では、フォアグラウンド サービスを使用する代わりに、コンパニオン デバイス マネージャーを使用してデバイスに接続できる場合があります。通常どおり、ユースケースに特殊目的の API を使用できる場合は、通常はフォアグラウンド サービスを使用するよりも、その方が適切です。
新しいメディア処理フォアグラウンド サービスを使用する
メディアデータを処理する必要がある場合は、新しい mediaProcessing
フォアグラウンド サービスを使用できます。このサービスタイプは、Android 15 以降をターゲットとするアプリで使用できます。たとえば、再生のためにアプリでメディアをある形式から別の形式にコード変換する必要がある場合は、このサービスタイプが適しています。詳細については、メディア処理フォアグラウンド サービスのドキュメントをご覧ください。
参考情報
フォアグラウンド サービスに関するこの変更について詳しくは、以下の参考情報をご覧ください。