Articles

Schedule tasks with WorkManager Part of Android Jetpack.

WorkManager は、アプリケーションが終了しても、デバイスが再起動しても、実行が期待できる遅延可能で非同期のタスクを簡単にスケジュールするための APIです。 WorkManager API は、FirebaseJobDispatcher、GcmNetworkManager、Job Scheduler など、これまでの Android バックグラウンドスケジューリング API の置き換えに適しており、推奨される API です。 WorkManagerは、バッテリー寿命に配慮しながらも、APIレベル14まで遡って動作する、モダンで一貫性のあるAPIで、先行製品の機能を組み込んでいます。

WorkManager は、次の基準に基づいて基礎となるジョブ ディスパッチ サービスを使用します。

If the device is running on API Level 23 or higher, JobScheduler is used. OnAPI Levels 14-22, GcmNetworkManager is chosen if it's available, otherwise, acustom AlarmManager and BroadcastReciever implementation is used as afallback.

Note: あなたのアプリが Android 10 (API レベル 29) 以上をターゲットにしている場合、FirebaseJobDispatcher および GcmNetworkManager API コールは Android Marshmallow (6.0) 以上が動作するデバイスではもはや機能しなくなります。 FirebaseJobDispatcher および GcmNetworkManager の移行ガイドに従って、移行してください。 また、これらの廃止に関する詳細については、Unifying Background Task Scheduling onAndroid アナウンスを参照してください。

Features

WorkManager には、よりシンプルで一貫した API に加え、次のような多くの重要な利点があります。(たとえば、デバイスが Wi-Fi のときだけ、デバイスがアイドルのときだけ、または十分なストレージ容量があるときだけ実行するなど)

Robust Scheduling

WorkManager では、柔軟なスケジュール ウィンドウを使って、1 回または繰り返し実行するように仕事をスケジュールすることができます。 作業にはタグや名前を付けることができるので、ユニークで交換可能な作業をスケジュールしたり、作業グループを一緒に監視またはキャンセルすることができます。 スケジュールされた作業は、内部で管理されたSQLiteデータベースに保存され、WorkManagerは、この作業が持続し、デバイスの再起動を越えて再スケジュールされるように配慮しています。 また、WorkManager は、Doze モードなどの省電力機能やベストプラクティスを遵守しているので、心配はいりません。

柔軟な再試行ポリシー

時には、作業が失敗することがあります。

Work Chaining

WorkManager は、設定可能な指数関数的バックオフポリシーを含む、柔軟な再試行ポリシーを提供します。

Kotlin

WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()

Java

WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();

各ワークタスクで、その作業の入力と出力データを定義することが可能です。

Built-In Threading Interoperability

WorkManager は、RxJava および Coroutines とシームレスに統合し、独自の非同期 API をプラグインする柔軟性を提供します。

Use WorkManager for Deferrable and Reliable Work

WorkManager は、延期可能な作業、つまり、すぐに実行する必要がなく、アプリケーションが終了したりデバイスが再起動したりしても確実に実行する必要がある作業のために設計されています。 たとえば、

  • バックエンド サービスにログまたは分析を送信する
  • サーバーとアプリケーション データを定期的に同期する

WorkManager は、アプリ プロセスが終了しても安全に終了できるプロセス中のバックグラウンド作業や即時実行が必要な作業のために意図されているわけではありません。 バックグラウンド処理ガイドを参照して、ニーズに合ったソリューションを確認してください。

はじめに

アプリで WorkManager を使用するには、はじめにガイドを確認してください。