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