web-dev-qa-db-ja.com

Android Work Manager vs Services?

私のAndroidアプリでは、次々に実行される複数のインテントサービスがあり、最初のインテントサービスはブロードキャストによってトリガーされます。私は遭遇しました ワークマネージャー 数日以前は、WorkerクラスとWorkManagerクラスのシンプルさが気に入っていました通常のインテントサービスに対するワークマネージャーの長所と短所は?将来、より多くのインテントサービスを作成する必要があるという事実を考慮して、ワークマネージャーに切り替える必要がありますまた、どのオプションを使用するとコードを簡単にテストできますか?

18
Sushobh Nadiger

WorkManagerには次の機能が付属しています

  • プロセスの死を乗り切ることができるタスクを提供します
  • アプリとアプリのプロセスを起動して作業を実行し、それによって作業が実行されることを保証できます。
  • 作業状況を観察し、複雑な作業チェーンを作成することができます
  • 作業チェーンを許可します。これにより、大きな作業を小さな作業に分離し、さまざまな制約に基づいて実行できます。
  • 居眠りモードやOSによって課されるその他の制限を優雅に管理します。

以下が役に立つ場合があります:

  • メディアのアップロードなど、長時間実行されるバックグラウンドタスクの実行
  • データを解析してデータベースに保存します。
  • プロセスの死を乗り切るために必要な重要なタスク

今後、より多くのインテントサービスを作成する必要があるかもしれないという事実を考慮して、ワークマネージャーに切り替える必要がありますか?

ほとんどの場合、IntentServiceの代わりになるはずですが、使用する前に慎重に検討する必要があります。そもそもIntentServiceが最良の選択ではなかった可能性があります。

WorkManagerはすべてのバックグラウンドタスクに対応しているわけではありません。例えば。プロセスの死を乗り切る必要はなく、これらのタスクはすぐに実行する必要があるため、支払いの処理には使用しないでください。フォアグラウンドサービスの使用を検討してください。また、データとビューのコンテンツを解析するためにそれらを使用することは素晴らしい考えではありません。

実際に使用する前に、その機能が必要かどうかを検討する必要があります。 Googleはコーディングの方法をほとんど刷新しているため、WorkManagerはバックグラウンド処理の問題を解決します。確かに、OSによって課せられるいくつかの制約の処理を抽象化するため、これは最も重要なオプションです。将来の実装に使用することを検討する必要があります。

また、どのオプションでコードを簡単にテストできますか?

Googleは、WorkManagerのテストを容易にするテストライブラリも提供しています。まだ開発中ですが、リリースされる前により強力になるはずです。

26
Sagar