web-dev-qa-db-ja.com

Android WorkManager vs JobScheduler

なぜ新しいAndroid WorkManager ifalready havea JobScheduler いくつかの気の利いたバックポート( AndroidJob および FirebaseJobDispatcher )に同じ機能がありますか?殺害機能などがありますかanythingを参照して、まだ別のスケジューラーに移行したいと思います。

20

「WorkManagerには多くのNice機能がありますが、その主な目標は古いデバイスでJobSchedulerのAPIを使用することです」...待ってください。しかし、すでにいくつかのバックポートがあります。それらの何が問題になっていますか?短くするには:

  1. FireaseJobDispatcher は問題ありませんが、ジョブをスケジュールするにはGoogle Playが必要です。たとえば、中国をターゲットにしている場合は良くありません。

  2. Evernoteの AndroidJob は、多くの機能を備えた優れたバックポートです。私見、それはだった仕事のスケジューリングに最適。しかし、現在、ライブラリの最新バージョンは、前述のWorkManagerを内部で使用しています。そして、残念ながら、遅かれ早かれ ライブラリは非推奨になります

新しいプロジェクトを開始する場合は、このライブラリの代わりにWorkManagerを使用する必要があります。また、このライブラリからWorkManagerへのコードの移行を開始する必要があります。将来のある時点で、このライブラリは非推奨になります。

彼らは、より多くの機能を提供し、短い比較を提供するため、WorkManagerに切り替えることを提案します:

|   Feature          | Android-job | WorkManager |
| ------------------ | ----------- | ----------- |
| Exact jobs         | Yes         | No          |
| Transient jobs     | Yes         | No          |
| Daily jobs         | Yes         | No          |
| Custom Logger      | Yes         | No          |
| Observe job status | No          | Yes         |
| Chained jobs       | No          | Yes         |
| Work sequences     | No          | Yes         |

Imo、最後の3つの機能は非常に便利で、WorkManagerのみでサポートされています。私の最後の質問に対する答えはイエスです、それはいくつかのkilling-featuresを持っています:

  • Google Playは不要です
  • クエリ可能
  • チェーン可能
  • 日和見主義

WorkManagerの詳細については、Sumir Katariaによる this talk をご覧ください。

追伸誰かが理由を知っている場合FirebaseJobDispatcherGoogleエンジニアが積極的にサポートしています 廃止される代わりに、以下のコメントに書いてください:)

24

WorkManagerは、GoogleのEvernoteのAndroid-Jobライブラリに対する回答のように見えますが、いくつかの改善があります。デバイスのAPIレベルに応じて、Android-Jobと同様にJobScheduler、Firebase JobDispatcher、AlarmManagerを使用します。タグの使用方法はほとんど同じに見え、ジョブ/作業への制約の割り当ては十分に似ています。

私が興奮している2つの機能は、作業を連鎖できることと、制約のある作業で日和見的になることです。 1つ目は、作業(ジョブ)を分割して、よりモジュール化できるようにします。モジュール化された作業が増えると、各作業の制約が少なくなり、早期に完了する可能性が高まります(日和見的)。たとえば、処理作業の大部分は、ネットワーク制約のある作業を満たす前に完了することができます。

したがって、現在のスケジューラの実装に満足しており、私が言及した2つの機能が付加価値をもたらさない場合、切り替えを行うことに大きな利点はまだありません。ただし、何か新しいことを書いている場合は、おそらくWorkManagerを使用する価値があります。

11
Steve Miskovetz

WorkManagerはJobSchedulerサービスを使用してジョブをスケジュールします。 JobSchedulerがデバイスでサポートされていない場合、Firebase JobDispatcherサービスを使用します。 Firebase JobDispatcherがデバイスで利用できない場合、AlarmManagerとBroadcastReceiverを使用します。

したがって、WorkManagerを使用すると、下位互換性について心配する必要はありません。これに加えて、ネットワークの制約、バッテリーレベル、充電状態、ストレージレベルなど、ジョブを実行するために満たす必要がある制約を定義できます。

これにより、タスクチェーンと引数のジョブへの受け渡しが可能になります。

http://www.zoftino.com/scheduling-tasks-with-workmanager-in-Android

4
Arnav Rao

WorkManagerはJobSchedulerとAlarmManagerの上にあります。WorkManagerは、ユーザーのデバイスAPIレベルなどの条件に基づいて、使用する適切なAPIを選択します

WorkManagerはシンプルですが、非常に柔軟なライブラリであり、多くの利点があります。これらは次のとおりです。

 -Support for both asynchronous one-off and periodic tasks.
 -Support for constraints such as network conditions, storage space, and charging -status 
 -Chaining of complex work requests, including running work in parallel.
 -Output from one work request used as input for the next.
 -Handles API level compatibility back to API level 14.
 -Works with or without Google Play services.
 -Follows system health best practices.
 -LiveData support to easily display work request state in UI.
0
Tarun Varshney