WorkManager
| 最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
|---|---|---|---|---|
| 2025 年 10 月 22 日 | 2.11.0 | - | - | - |
依存関係の宣言
WorkManager への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。
アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { def work_version = "2.11.0" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.11.0" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Kotlin 拡張機能の使用方法については、ktx のドキュメントをご覧ください。
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 2.11
バージョン 2.11.0
2025 年 10 月 22 日
androidx.work:work-*:2.11.0 がリリースされました。バージョン 2.11.0 にはこれらの commit が含まれています。
2.10.0 以降の重要な変更:
minSdkが API 21 から API 23 に更新されました。WorkManagerの構成ビルダーに APIsetRemoteSessionTimeoutMillisが追加され、RemoteWorkManagerセッションが最後に使用されてから存続する時間を構成できるようになりました。
バージョン 2.11.0-rc01
2025 年 10 月 8 日
androidx.work:work-*:2.11.0-rc01 がリリースされました。バージョン 2.11.0-rc01 にはこれらの commit が含まれています。
バージョン 2.11.0-beta01
2025 年 9 月 24 日
androidx.work:work-*:2.11.0-beta01 がリリースされました。バージョン 2.11.0-beta01 には、これらの commit が含まれています。
API の変更
stopRunningWorkWithReasonをWorkManagerTestDriverに追加します。(Ie53b2、b/439955564)
バグの修正
- 保留中のコマンドがある場合にフォアグラウンド サービスが停止する問題を修正しました(Iae822、b/432069314)
- リモート コルーチン ワーカーがリモート サービスのバインドを解除できない問題を修正(I842f2、b/247113322)
バージョン 2.11.0-alpha01
2025 年 8 月 27 日
androidx.work:work-*:2.11.0-alpha01 がリリースされました。バージョン 2.11.0-alpha01 にはこれらの commit が含まれています。
API の変更
- minSdk が API 21 から API 23 に更新されました(Ibdfca、b/380448311、b/435705964、b/435705223)
- WorkManager の構成ビルダーに API
setRemoteSessionTimeoutMillisが追加され、RemoteWorkManager セッションが最後に使用されてから存続する時間を構成できるようになりました。(Ib23c8) - システムによって処理が中断されたときにバックオフを適用する試験運用版 API を
WorkRequest.Builderに追加しました。(Ie2dc7、b/335513480) - カスタム
WorkerFactory実装をサポートするために、構築中のものとは異なるワーカー クラスをTestListenableWorkerBuilderに渡すテスト API を追加(If6bff、b/389154854)
バグの修正
- 不要な IPC を防ぐため、
SharedNetworkCallbackでネットワーク機能をキャッシュに保存(Ie4027、b/427115602) - ネットワーク制約の評価に関する問題を修正しました。この問題では、最初のワークアイテムの後のワークアイテムが現在のネットワーク機能を取得せず、タイムアウト後に
ConstraintsNotMetにヒットしていました(Ib6a66、b/427115602)
バージョン 2.10
バージョン 2.10.5
2025 年 9 月 24 日
androidx.work:work-*:2.10.5 がリリースされました。バージョン 2.10.5 にはこれらの commit が含まれています。
バグの修正
- 保留中のコマンドがある場合にフォアグラウンド サービスが停止する問題を修正しました(Iae822、b/432069314)
バージョン 2.10.4
2025 年 9 月 10 日
androidx.work:work-*:2.10.4 がリリースされました。バージョン 2.10.4 にはこれらの commit が含まれています。
バグの修正
RemoteCoroutineWorkerがリモート サービスのバインド解除に失敗する問題を修正しました(I842f2、b/247113322)
バージョン 2.10.3
2025 年 7 月 30 日
androidx.work:work-*:2.10.3 がリリースされました。バージョン 2.10.3 にはこれらの commit が含まれています。
バグの修正
- 以前のワーカーと同じネットワーク制約を持つワーカーが、制約が満たされていないと報告する問題を修正しました。(b/427115602)。
バージョン 2.10.2
2025 年 6 月 18 日
androidx.work:work-*:2.10.2 がリリースされました。バージョン 2.10.2 にはこれらの commit が含まれています。
バグの修正
- ネットワーク リクエストとデフォルトの機能を持つワーカーを永続化すると、削除された機能が再追加され、ネットワーク制約のあるワーカーが誤動作する問題を修正しました。(b/409716532)
- ネットワークと機能が利用可能であるにもかかわらず、制約が満たされていないためにネットワーク制約のあるワーカーがすぐに実行されないバグを修正しました。(b/423403088)
バージョン 2.10.1
2025 年 4 月 23 日
androidx.work:work-*:2.10.1 がリリースされました。バージョン 2.10.1 にはこれらの commit が含まれています。
バグの修正
- 制約の追跡に使用される
NetworkCallbackのWorkManagerの登録からTooManyRequestsExceptionがスローされる可能性を減らします。(b/231499040、b309d5)。
バージョン 2.10.0
2024 年 10 月 30 日
androidx.work:work-*:2.10.0 がリリースされました。バージョン 2.10.0 にはこれらの commit が含まれています。
バージョン 2.9.1 以降の重要な変更
WorkManagerのジョブにトレースタグを追加しました。これにより、実行中の Worker の名前が含まれるため、「adb shell dumpsys jobscheduler」が非常にわかりやすくなります。WorkManagerの主要な領域の周囲にもトレース セクションが追加されています。CoroutineWorkerが実行されるディスパッチャーを制御するためにConfiguration.workerCoroutineContextが追加されました。- デベロッパーは、
Constraints.setRequiredNetworkRequestメソッドを使用して、ワーカーの制約としてNetworkRequestを指定できます。これにより、このワーカーが実行されるネットワークをより詳細に制御できます。 WorkManager2.10.0 は SDK 35 でコンパイルされ、SDK 35 との互換性に関するさまざまな変更が含まれています。
バージョン 2.10.0-rc01
2024 年 10 月 24 日
androidx.work:work-*:2.10.0-rc01 がリリースされました。バージョン 2.10.0-rc01 にはこれらの commit が含まれています。
バージョン 2.10.0-beta01
2024 年 10 月 2 日
androidx.work:work-*:2.10.0-beta01 がリリースされました。バージョン 2.10.0-beta01 には、これらの commit が含まれています。
バージョン 2.10.0-alpha04
2024 年 9 月 18 日
androidx.work:work-*:2.10.0-alpha04 がリリースされました。バージョン 2.10.0-alpha04 には、これらの commit が含まれています。
API の変更
- フォアグラウンド サービス タイプに基づいて実行タイムアウトによりフォアグラウンド ワーカーが停止した場合の停止理由
STOP_REASON_FOREGROUND_SERVICE_TIMEOUTを追加します。(Ibd0af)
バージョン 2.10.0-alpha03
2024 年 9 月 4 日
androidx.work:work-*:2.10.0-alpha03 がリリースされました。バージョン 2.10.0-alpha03 にはこれらの commit が含まれています。
新機能
WorkManagerのジョブにトレースタグを追加しました。これにより、実行中の Worker の名前が含まれるため、「adb shell dumpsys jobscheduler」が非常にわかりやすくなります。WorkManagerの主要な領域の周囲にもトレース セクションが追加されています。
API の変更
- WorkManager 2.10.0 が SDK 35 でコンパイルされるようになりました。
WorkManagerがstopSelf()を呼び出さなかった場合に、タイプが「short service」と「data sync」のフォアグラウンド ワーカーがタイムアウトして ANR を引き起こす問題を修正この修正は、フォアグラウンド サービス タイプが導入された API 34 と 35 を搭載したデバイスにのみ適用されます。(ca06b2、b/364508145)WorkerFactoryを使用する際にWorkerがバインドするリモート プロセスを切り替えられるようにする新しいWorkerParametersAPI。(Ibdc8a、Ie8a90、I7373f)
バグの修正
- 作業のフォアグラウンド タイプに Android 14 の前提条件の権限があり、それが取り消された場合に、
WorkManagerが長時間実行ワーカー(フォアグラウンド ワーカー)の再起動を試行することで発生するクラッシュを修正しました。(b/333957914) - AGP 7.3 以降(R8 バージョン 3.3 など)で R8 を使用する場合、および AGP 8.1 以降(D8 バージョン 8.1 など)ですべてのビルドで、API モデリングを介して自動的に行われるため、新しいプラットフォーム API へのアクセスの手動でのアウトライン設定を削除しました。AGP を使用していないクライアントは、D8 バージョン 8.1 以降に更新することをおすすめします。詳しくは、こちらの記事をご覧ください。(Ia60e0、b/345472586)
バージョン 2.10.0-alpha02
2024 年 4 月 17 日
androidx.work:work-*:2.10.0-alpha02 がリリースされました。バージョン 2.10.0-alpha02 にはこれらの commit が含まれています。
API の変更
WorkManagerの構成可能な@RestrictToTracerを介してトレース スパンを出力する機能が追加されました。(I17d7f、b/260214125)CoroutineWorkerが実行されるディスパッチャを制御するためにConfiguration.workerCoroutineContextが追加されました。これにより、WorkManagerでDispatchers.Defaultを完全に使用しないようにすることができます。(Icd1b7)- Worker のカスタム例外ハンドラを追加(Ib1b74、b/261190695)
OneTimeWorkRequest.BuilderとPeriodicWorkRequest.BuilderをClassではなくKClassで構築できるようになりました:val request = OneTimeWorkRequest.Builder(Worker::class).setConstraints(...).build()(Ib55f6)WorkManagerクラスが Kotlin に移行されました。LiveData、ListenableFuture、Flowを返すメソッドが、正しい null 可能性情報を提供するようになりました。コードの null 可能性の想定が誤っていた場合、クライアントのソースコードの変更が必要になる可能性があります。(If6757)
バージョン 2.10.0-alpha01
2024 年 1 月 24 日
androidx.work:work-*:2.10.0-alpha01 がリリースされました。バージョン 2.10.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
- デベロッパーは、
Constraints.setRequiredNetworkRequestメソッドを使用して、ワーカーの制約としてNetworkRequestを指定できます。これにより、このワーカーが実行されるネットワークをより詳細に制御できます。
API の変更
NetworkRequestを制約として指定する機能を追加しました。(Id98a1、b/280634452)
バージョン 2.9
バージョン 2.9.1
2024 年 8 月 7 日
androidx.work:work-*:2.9.1 がリリースされました。バージョン 2.9.1 にはこれらの commit が含まれています。
バグの修正
- 作業のフォアグラウンド タイプに、取り消された Android 14 の前提条件の権限がある場合に、
WorkManagerが長時間実行ワーカー(フォアグラウンド ワーカーなど)の再起動を試行することで発生するクラッシュを修正しました。(b/333957914)
バージョン 2.9.0
2023 年 11 月 29 日
androidx.work:work-*:2.9.0 がリリースされました。バージョン 2.9.0 に含まれる commit については、こちらをご覧ください。
2.8.0 以降の重要な変更
Flowを介したオブザーバビリティ。LiveDataの代わりに、Flow のWorkManager.getWorkInfosFlowなどのメソッドで Worker の進行状況を監視できるようになりました。WorkManagerは、ワーカーが以前に停止した理由に関するヒントを提供します。getStopReason()メソッドを使用してワーカー自体からクエリするか、getStopReason()を使用してWorkInfoからクエリできます。setNextScheduleTimeOverrideを使用した定期的なワーカーの正確なスケジューリング。これにより、次の定期的な作業スケジュールを動的に計算できます。このスケジュールを使用して、適応型更新時間、カスタム再試行動作、ニュースフィード ワーカーをユーザーが毎朝起床する前にドリフトなしで実行するなどの高度な機能を実装できます。ExistingPeriodicWorkPolicy.UPDATEは、次のワーカーをスケジュール設定する際に現在実行中のワーカーがキャンセルされないように、これらの手法とともに使用する必要があります。- WorkManager のテストで、スレッドが本番環境と一致するようになりました。
ExecutorsMode.PRESERVE_EXECUTORSはinitializeTestWorkManagerで使用して、Configurationで設定されたエグゼキュータを保持し、実際にはメインスレッドを使用できます。 CoroutineWorkerなどのコルーチン API が、追加のアーティファクト work-runtime-ktx からメインのアーティファクト work-runtime に移動しました。work-runtime-ktx は空になりました。
API の変更
stopReasonがWorkInfoに追加されました。ワーカーの実行後にstopReasonを使用できるようにします。ワーカーが停止すると、アプリ自体がすぐに強制終了される可能性があるため、stopReasonを使いやすい方法でレポートする際に役立ちます。(I21386)Clockを設定ファイルで設定し、Worker テストの実行順序を制御できるようにします。(Ic586e)- ワーカーが停止した理由のヒントを提供する
getStopReason()メソッドがListenableWorkerに追加されました。(I07060) - リークされたリソースに関する Closeguard の警告を回避するために
WorkManagerTestInitHelper#closeWorkDatabase()を追加しました。(Ia8d49) WorkInfoのコンストラクタが公開され、テストに役立つようになりました。(Ia00b6、b/209145335)work-runtime-ktxは空になり、CoroutineWorkerやその他の Kotlin 固有のユーティリティはメインの work-runtime アーティファクトで使用できるようになりました。(I71a9a)- 定期的な処理のスケジュールを正確に設定できる
setNextScheduleTimeOverrideメソッドを追加しました(I3b4da) - スケジュールされた実行時刻情報を取得する
getNextScheduleTimeMillisがWorkInfoに追加されました。(I797e4) - 初期遅延と周期性の情報が
WorkInfoに追加されます。(I52f2f) - メソッド
getWorkInfosByTagFlow、getWorkInfoByIdFlow、getWorkInfosForUniqueWorkFlow、getWorkInfosFlowを介して Flow 経由でワーカーを監視するメソッドを追加しました(If122a) - 欠落していた
@RequiresApi(...)アノテーションをConstraintsのコンストラクタとプロパティに追加しました。WorkManagerの初期バージョンから存在していたConstraints.Builderのセッターの対応するアノテーションと整合性が取られるようになりました。(I6d7d2) WorkManagerにコンテンツ URI ワーカー用の個別の上限が設定され、JobSchedulerで保証されたスロットが与えられるようになりました。これにより、高負荷時にコンテンツの更新が欠落するのを防ぐことができます。この上限はConfiguration.Builder.setContentUriTriggerWorkersLimitで構成できます。(Ic128f)- 制約が
WorkInfoに追加されます。(I162c0)
バージョン 2.9.0-rc01
2023 年 10 月 18 日
androidx.work:work-*:2.9.0-rc01 がリリースされました。バージョン 2.9.0-rc01 に含まれる commit については、こちらをご覧ください。
- 前回のベータ版リリースからの変更はありません
バージョン 2.9.0-beta01
2023 年 9 月 6 日
androidx.work:work-*:2.9.0-beta01 がリリースされました。バージョン 2.9.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
WorkInfo.stopReasonとListenableWorker.stopReasonから返される停止理由の定数を追加しました(I0cc00)
バージョン 2.9.0-alpha02
2023 年 7 月 26 日
androidx.work:work-*:2.9.0-alpha02 がリリースされました。バージョン 2.9.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
WorkManagerは、ワーカーが以前に停止した理由に関するヒントを提供します。getStopReason()メソッドを使用してワーカー自体からクエリするか、getStopReason()を使用してWorkInfoからクエリできます。
API の変更
stopReasonがWorkInfoに追加されました。ワーカーの実行後にstopReasonを使用可能にします。ワーカーが停止するとアプリ自体がすぐに強制終了される可能性があるため、stopReasonを有用な方法でレポートするのに役立ちます。(I21386)- Clock を設定で設定できるようにし、Worker テストの実行順序を制御するために使用できるようにします。(Ic586e)
- ワーカーが停止した理由のヒントを提供する
getStopReason()メソッドがListenableWorkerに追加されました。(I07060) - リークされたリソースに関する Closeguard の警告を回避するために
WorkManagerTestInitHelper#closeWorkDatabase()を追加しました。(Ia8d49)
バグの修正
TestDriverを使用してoverrideNextScheduleTimeをバイパスする機能を追加し、テスト可能性に関する問題を修正しました。(Ic2905)
バージョン 2.9.0-alpha01
2023 年 6 月 7 日
androidx.work:work-*:2.9.0-alpha01 がリリースされました。バージョン 2.9.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
Flowを介したオブザーバビリティ。LiveDataの代わりに、Flow のWorkManager.getWorkInfosFlowなどのメソッドで Worker の進行状況を監視できるようになりました。setNextScheduleTimeOverrideを使用した定期的なワーカーの正確なスケジューリング。これにより、次の定期的な作業スケジュールを動的に計算できます。このスケジュールを使用して、適応型更新時間、カスタム再試行動作、ニュースフィード ワーカーをユーザーが毎朝起床する前にドリフトなしで実行するなどの高度な機能を実装できます。ExistingPeriodicWorkPolicy.UPDATEは、次のワーカーをスケジュール設定する際に現在実行中のワーカーがキャンセルされないように、これらの手法とともに使用する必要があります。WorkManagerのテストは、本番環境と一致するスレッド処理で行われます。ExecutorsMode.PRESERVE_EXECUTORSを使用すると、Configurationで設定されたエグゼキュータを保持し、実際にはメインスレッドを使用できます。CoroutineWorkerなどのコルーチン API が、追加のアーティファクトwork-runtime-ktxからメインのアーティファクトwork-runtimeに移動しました。work-runtime-ktxが空になりました。
API の変更
WorkInfoのコンストラクタが公開され、テストに役立つようになりました。(Ia00b6、b/209145335)work-runtime-ktxが空になり、CoroutineWorkerやその他の Kotlin 固有のユーティリティがメインのwork-runtimeアーティファクトで利用できるようになりました。(I71a9a)- 定期的な処理のスケジュールを正確に設定できる
setNextScheduleTimeOverrideメソッドを追加しました(I3b4da) getEarliestRunTimeMillisの名前をgetNextScheduleTimeMillisに変更しました(I2bd7a)- 次の実行スケジュール時刻の情報が
WorkInfoに追加されます。(I797e4) - 初期遅延と周期性の情報が
WorkInfoに追加されます。(I52f2f) - メソッド
getWorkInfosByTagFlow、getWorkInfoByIdFlow、getWorkInfosForUniqueWorkFlow、getWorkInfosFlowを介して Flow 経由でワーカーを監視するメソッドを追加しました(If122a) - Constraints のコンストラクタとプロパティに、欠落していた
@RequiresApi(...)アノテーションを追加しました。WorkManagerの初期バージョンから存在していたConstraints.Builderのセッターの対応するアノテーションと整合性が取られるようになりました。(I6d7d2) WorkManagerにコンテンツ URI ワーカー用の個別の上限が設定され、JobSchedulerで保証されたスロットが与えられるようになりました。これにより、高負荷時にコンテンツの更新が欠落するのを防ぐことができます。上限はConfiguration.Builder.setContentUriTriggerWorkersLimitを介して構成できます。(Ic128f)- 制約が
WorkInfoに追加されます。(I162c0)
バージョン 2.8
バージョン 2.8.1
2023 年 3 月 22 日
androidx.work:work-*:2.8.1 がリリースされました。バージョン 2.8.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- 以前は 2 つの同時ブロードキャストを正しく処理していなかった
RescheduleReceiverの ANR を修正しました。(b/236906724)
バージョン 2.8.0
2023 年 2 月 8 日
androidx.work:work-*:2.8.0 がリリースされました。バージョン 2.8.0 に含まれる commit については、こちらをご覧ください。
2.7.0 以降の重要な変更
新機能
- 元のキュー登録時間やチェーンなどを保持するよう、影響を与えない方法で
WorkRequestsを更新する機能が追加されました。この機能については、詳細が記載されたブログ投稿と、WorkManager.updateWork、ExistingPeriodicWorkPolicy.UPDATEの Javadoc をご覧ください。
API の変更
- 元のキュー登録時間やチェーンを保持して処理を更新するための
WorkManager.updateWorkが追加されました。(I9a248、b/219446409) ExistingPeriodicWorkPolicy.UPDATEが追加されました。このポリシーにより、名前で定期的な処理を更新できます。これは既存のREPLACEと類似していますが、影響が軽減されます。つまり、ワーカーが現在実行中であれば、ワーカーはキャンセルされず、キュー登録時間が維持されます。初期遅延と期間は、更新時間ではなく、元のキュー登録時間から計算されます。名前が非常に似ているREPLACEとUPDATEの混同を軽減するため、REPLACEは非推奨になりました。REPLACEの以前のセマンティクスを継続したい場合は、REPLACEと同じである、CANCEL_AND_REENQUEUEを使用できます。(I985ed、b/219446409)- setSchedulingExceptionHandler を介して
Consumer<Throwable>を提供してスケジュール例外をインターセプトする機能を追加しました。 - setInitializationExceptionHandler を介して
Consumer<Throwable>を提供し、WorkManager を初期化しようとしたときに問題が発生したかどうかを判断する機能を追加しました。 OneTimeWorkRequestおよびPeriodicWorkRequestのインライン ヘルパーをandroidx.work:work-runtime-ktxからandroidx.work:work-runtimeに移動しました。(I0010f、b/209145335)WorkQueryを直接作成するためのヘルパー メソッドWorkQuery.fromIds、WorkQuery.fromStates、WorkQuery.fromUniqueWorkNames、WorkQuery.fromTagsを追加しました。(b/199919736、If48f2、b/199919736)getForegroundInfoをWorkerに追加しました。(Ic1ead)- RxJava 2 と RxJava 3 の両方の
RxWorkerに、ListenableFutureを返すsetForegroundInfoAsyncの代わりに使用できる、Completableを返すsetForegroundが追加されました。 - RxJava 2 と RxJava 3 の両方の
RxWorkerに、ListenableFutureを返すgetForegroundInfoAsyncの代わりに使用できる、Singleを返すgetForegroundInfoが追加されました。(b/203851459) Constraints.Builderを使用せずに制約を直接構築できるようになり、Kotlin ユーザーにとって便利になりました。(Idc390、b/137568653)WorkManagerが初期化されているかどうかを確認する機能を追加しました。また、WorkManagerが初期化された構成をライブラリのデベロッパーが取得できるように、新しいgetConfiguration()API を追加しました。(I6eff3、b/212300336)
バグの修正
- 過度な処理を行うスケジューラにより負荷がかかった場合に、ワーカーが直ちに実行されない問題を修正しました。(I9686b、b/248111307)
- SDK 33 以降で
POST_NOTIFICATIONS権限を付与する必要がある API に@RequiresPermissionを追加しました。(Ie542e、b/238790278) suspendCancellableCoroutineを使用すると、CoroutineScopeのキャンセルがListenableFutureに反映されます。
バージョン 2.8.0-rc01
2022 年 12 月 7 日
androidx.work:work-*:2.8.0-rc01 がリリースされました。バージョン 2.8.0-rc01 に含まれる commit については、こちらをご覧ください。
新機能
- このリリースには新機能はありません。バージョン アップを主としたリリースです。
バージョン 2.8.0-beta02
2022 年 11 月 9 日
androidx.work:work-*:2.8.0-beta02 がリリースされました。バージョン 2.8.0-beta02 に含まれる commit については、こちらをご覧ください。
バグの修正
- 以前は新しい世代の情報が考慮されていなかった
WorkInfoのequalsメソッドを修正しました。(4977cc)
バージョン 2.8.0-beta01
2022 年 10 月 5 日
androidx.work:work-*:2.8.0-beta01 がリリースされました。バージョン 2.8.0-beta01 に含まれる commit については、こちらをご覧ください。
バグの修正
- 過度な処理を行うスケジューラにより負荷がかかった場合に、ワーカーが直ちに実行されない問題を修正しました。(I9686b、b/248111307)
バージョン 2.8.0-alpha04
2022 年 9 月 7 日
androidx.work:work-*:2.8.0-alpha04 がリリースされました。バージョン 2.8.0-alpha04 に含まれる commit については、こちらをご覧ください。
API の変更
- ワーカーの世代を返す
WorkerInfo.getGeneration()とWorkerParameters.getGeneration()が追加されました。ExistingPeriodicWorkPolicy.UPDATEを使用してWorkManager.updateWorkまたはWorkManager.enqueueUniquePeriodicWorkで更新された場合、ワーカーには複数の世代があります。ワーカーが現在実行されている場合、ワーカーの実行中に更新が行われると、このメソッドは現在実行中のワーカーの世代よりも新しい世代を返す可能性がある点に注意してください。(I665c5、b/219446409)(I128a9、b/219446409) InitializationExceptionHandlerを追加しました。WorkManagerを初期化しようとしたときに問題が発生したかどうかを判断するために使用できる例外ハンドラです。(I061de)
バージョン 2.8.0-alpha03
2022 年 8 月 10 日
androidx.work:work-*:2.8.0-alpha03 がリリースされました。バージョン 2.8.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- 元のキュー登録時間やチェーンなどを保持するよう、影響を与えない方法で
WorkRequestsを更新する機能が追加されました。詳しくは、WorkManager.updateWorkおよびExistingPeriodicWorkPolicy.UPDATEをご覧ください。
API の変更
- 元のキュー登録時間やチェーンを保持して処理を更新するための
WorkManager.updateWorkが追加されました。(I9a248、b/219446409) ExistingPeriodicWorkPolicy.UPDATEが追加されました。このポリシーにより、名前で定期的な処理を更新できます。これは既存のREPLACEと類似していますが、影響が軽減されます。つまり、ワーカーが現在実行中であれば、ワーカーはキャンセルされず、キュー登録時間が維持されます。初期遅延と期間は、更新時間ではなく、元のキュー登録時間から計算されます。名前が非常に似ているREPLACEとUPDATEの混同を軽減するため、REPLACEのサポートを終了しました。REPLACEの以前のセマンティクスを継続したい場合は、REPLACEと同じである、CANCEL_AND_REENQUEUEを使用できます。(I985ed、b/219446409)SchedulingExceptionHandlerを定義することによってスケジュール例外をインターセプトする機能を追加しました。(I033eb)OneTimeWorkRequestおよびPeriodicWorkRequestのインライン ヘルパーをandroidx.work:work-runtime-ktxからandroidx.work:work-runtimeに移動しました。(I0010f、b/209145335)
バグの修正
- SDK 33 以降で POST_NOTIFICATIONS 権限を付与する必要がある API に
@RequiresPermissionを追加しました。(Ie542e、b/238790278)
バージョン 2.8.0-alpha02
2022 年 4 月 6 日
androidx.work:work-*:2.8.0-alpha02 がリリースされました。バージョン 2.8.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
- Builder を使用せずに制約を直接構築できるようになり、Kotlin ユーザーにとって便利になりました。(Idc390、b/137568653)
WorkManagerが初期化されているかどうかを確認する機能を追加しました。また、WorkManagerが初期化された構成をライブラリのデベロッパーが取得できるように、新しいgetConfiguration()API を追加しました。(I6eff3、b/212300336)
バージョン 2.8.0-alpha01
2022 年 1 月 12 日
androidx.work:work-*:2.8.0-alpha01 がリリースされました。バージョン 2.8.0-alpha01 に含まれるコミットについては、こちらをご覧ください。
API の変更
- WorkQuery を直接作成するためのヘルパー メソッド
WorkQuery.fromStates、WorkQuery.fromUniqueWorkNames、WorkQuery.fromTagsを追加しました。(If48f2、b/199919736) - 将来の SDK 用に試験運用版の BuildCompat メソッドを追加しました。(Iafd82、b/207528937)
WorkerにgetForegroundInfoを追加しました。(Ic1ead)- ID から WorkQuery を直接作成するためのヘルパー メソッド
WorkQuery.fromIdsを追加しました。(Ie5bdf、b/199919736) - RxWorker で、
ListenableFutureを返すsetForegroundInfoAsyncではなく、Completableを返すsetForegroundを使用できるようになりました。(I85156) - RxJava 2 の RxWorker で、
ListenableFutureを返すgetForegroundInfoAsyncではなく、Singleを返すgetForegroundInfoを使用できるようになりました。(I21c91、b/203851459) - RxJava 3 の RxWorker で、
ListenableFutureを返すgetForegroundInfoAsyncではなく、Singleを返すgetForegroundInfoを使用できるようになりました。(I1ca8a) - RxWorker で、
ListenableFutureを返すsetForegroundInfoAsyncではなく、Completableを返すsetForegroundを使用できるようになりました。(I992a3、b/203851459)
バグの修正
suspendCancellableCoroutineを使用すると、CoroutineScopeのキャンセルがListenableFutureに反映されます。(I77e63)
バージョン 2.7
バージョン 2.7.1
2021 年 11 月 17 日
androidx.work:work-*:2.7.1 がリリースされました。バージョン 2.7.1 に含まれる commit については、こちらをご覧ください。
バグの修正
suspendCancellableCoroutineを使用すると、CoroutineScopeのキャンセルがListenableFutureに反映されます。(I77e63)- 遅延処理リクエストが優先としてマークされると、直ちに例外がスローされます。bef1762
バージョン 2.7.0
2021 年 10 月 13 日
androidx.work:work-*:2.7.0 がリリースされました。バージョン 2.7.0 に含まれる commit については、こちらをご覧ください。
2.6.0 以降の重要な変更
WorkManager には、Android 12 のフォアグラウンド サービス制限をサポートする新しい
WorkRequest.Builder.setExpedited(...)API が導入されています。Android 12 以降、
setExpedited(...)を使用すると、WorkManager は JobScheduler の優先ジョブに委任します。一方、フォアグラウンド サービスに委任することで、Android 12 より前のバージョンとの下位互換性を提供します。
バージョン 2.7.0-rc01
2021 年 9 月 29 日
androidx.work:work-*:2.7.0-rc01 がリリースされました。バージョン 2.7.0-rc01 に含まれる commit については、こちらをご覧ください。
このバージョンは androidx.work:work-*:2.7.0-beta01 と同一です。
バージョン 2.7.0-beta01
2021 年 9 月 1 日
androidx.work:work-*:2.7.0-beta01 がリリースされました。バージョン 2.7.0-beta01 に含まれる commit については、こちらをご覧ください。
新機能
- WorkManager の初期化時に発生するマルチプロセス SQLite の競合を軽減しました。
API の変更
- Android 12(S)の基盤となるプラットフォーム API が安定していることを前提に、
@ExperimentalExpeditedWorkAPI を削除しました。(aosp/1792806)
バグの修正
getForegroundInfoAsync()を実装していない緊急作業者のために、より適切なエラー メッセージを表示します。(aosp/1809376)
バージョン 2.7.0-alpha05
2021 年 7 月 21 日
androidx.work:work-*:2.7.0-alpha05 がリリースされました。バージョン 2.7.0-alpha05 に含まれる commit については、こちらをご覧ください。
今回のリリースでは、WorkManager 2.6.0-beta02 リリースのバグの修正も行いました。
バージョン 2.7.0-alpha04
2021 年 6 月 2 日
androidx.work:work-*:2.7.0-alpha04 がリリースされました。
このリリースには、2.6.0-beta01 リリースからの変更も含まれています。
API の変更
ListenableWorker.setForegroundAsync()が非推奨ではなくなりました。- 可能な場合は、
WorkRequest.Builder.setExpedited(...)API を使用することをおすすめします。アプリにフォアグラウンド サービス制限が適用されない状況を適切にサポートするために、デベロッパーはListenableWorker.setForegroundAsync()API を使用できます。 ListenableWorker.setForegroundAsync()が呼び出された場合、アプリにフォアグラウンド サービス制限が適用されるようになると、ForegroundServiceStartNotAllowedException がスローされます。
バグの修正
- 優先ジョブのスケジュールが変更された場合、優先は解除され、標準のジョブになります。
バージョン 2.7.0-alpha03
2021 年 4 月 21 日
androidx.work:work-*:2.7.0-alpha03 がリリースされました。バージョン 2.7.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
WorkManager
2.6.0-alpha02以降: あらゆるプロセスで実行できるワーカーのサポートを追加しました。(Iaf200)WorkManager
2.6.0-alpha02以降: リモート プロセスにバインドできるRemoteListenableWorkerの実装であるRemoteCoroutineWorkerを追加しました。(I30578)
API の変更
- WorkManager
2.6.0-alpha02以降:TEMPORARILY_UNMETEREDネットワーク制約のサポートを追加しました。(I08d5e) - WorkManager
2.6.0-alpha02以降:setProgressAsync()のマルチプロセス ワーカーのサポート。(Ib6d08) - WorkManager
2.6.0-alpha02以降: 他のandroidx.startup.Initializerが依存関係として使用できるようにWorkManagerInitializerを一般公開しました。(I5ab11)
バージョン 2.7.0-alpha02
2021 年 3 月 10 日
androidx.work:work-*:2.7.0-alpha02 がリリースされました。バージョン 2.7.0-alpha02 に含まれる commit については、こちらをご覧ください。
バグの修正
PendingIntentの可変性を明示的にして、Android 12 をターゲットに設定したときのクラッシュを修正します。(b/180884673)
バージョン 2.7.0-alpha01
2021 年 2 月 18 日
androidx.work:work-*:2.7.0-alpha01 がリリースされました。バージョン 2.7.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
WorkManager には、Android 12 のフォアグラウンド サービス制限を考慮する新しい
WorkRequest.Builder.setExpedited(...)API が導入されています。アプリがバックグラウンドで動作している際は、フォアグラウンド サービスを起動できなくなりました。したがって、以前はフォアグラウンド サービスのライフサイクルにバインドされていた、実行時間が長い処理のサポートを強化するには、アプリで
WorkRequestを expedited としてマークします。この API は、現在非推奨になっている
setForegroundAsync(...)/setForeground(...)API の後継です。Android 12 以降、
setExpedited(...)を使用すると、WorkManager はJobSchedulerの高速ジョブに委任します。一方、フォアグラウンド サービスに委任することで、Android 12 より前のバージョンとの下位互換性を提供します。
API の変更
- 高速化された
WorkRequestのサポートを追加します。
バージョン 2.6.0
バージョン 2.6.0
2021 年 9 月 1 日
androidx.work:work-*:2.6.0 がリリースされました。バージョン 2.6.0 に含まれる commit については、こちらをご覧ください。
2.5.0 以降の重要な変更
WorkManager で WorkManager の初期化に
androidx.startupが使用されるようになりました。過去に WorkManager の初期化に使用されていたContentProviderでtools:node="remove"を使用していた場合は、以下のようにする必要があります。<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider><!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" />あらゆるプロセスで実行できるワーカーのサポートを追加しました。(Iaf200)
リモート プロセスにバインドできる RemoteListenableWorker の実装である
RemoteCoroutineWorkerを追加しました。(I30578)
バージョン 2.6.0-rc01
2021 年 8 月 4 日
androidx.work:work-*:2.6.0-rc01 がリリースされました。バージョン 2.6.0-rc01 に含まれる commit については、こちらをご覧ください。
このバージョンは androidx.work:work-*:2.6.0-beta02 と同一です。
バージョン 2.6.0-beta02
2021 年 7 月 21 日
androidx.work:work-*:2.6.0-beta02 がリリースされました。バージョン 2.6.0-beta02 に含まれる commit については、こちらをご覧ください。
バグの修正
RemoteWorkManagerがRemoteWorkManagerServiceから正しくアンバインドされ、RemoteWorkManagerServiceが正しくクリーンアップされるようになりました。aosp/1730694RemoteListenableWorkerがRemoteWorkerServiceから正しくアンバインドされ、RemoteWorkerServiceが正しくクリーンアップされるようになりました。aosp/1743817ForceStopRunnableがメインアプリのプロセスでのみ動作するようになりました。これは、複数のプロセスを使用するアプリのリソース競合を回避できる最適化です。aosp/1749180、aosp/1761729
バージョン 2.6.0-beta01
2021 年 6 月 2 日
androidx.work:work-*:2.6.0-beta01 がリリースされました。バージョン 2.6.0-beta01 に含まれる commit については、こちらをご覧ください。
このリリースには、いくつかの軽微なドキュメントの改善が含まれています。このリリースは 2.6.0-alpha02 とほとんど同じです。
バージョン 2.6.0-alpha02
2021 年 4 月 21 日
androidx.work:work-*:2.6.0-alpha02 がリリースされました。バージョン 2.6.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
あらゆるプロセスで実行できるワーカーのサポートを追加しました。(Iaf200)
リモート プロセスにバインドできる
RemoteListenableWorkerの実装であるRemoteCoroutineWorkerを追加しました。(I30578)
API の変更
TEMPORARILY_UNMETEREDネットワーク制約のサポートを追加しました。(I08d5e)setProgressAsync()のマルチプロセス ワーカーのサポート。(Ib6d08)- 他の
androidx.startup.Initializerが依存関係として使用できるようにWorkManagerInitializerを一般公開しました。(I5ab11)
バージョン 2.6.0-alpha01
2021 年 3 月 24 日
androidx.work:work-*:2.6.0-alpha01 がリリースされました。バージョン 2.6.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
WorkManagerが WorkManager の初期化にandroidx.startupを使用するようになりました。以前は、これはandroidx.work.impl.WorkManagerInitializerによって行われていました。(aosp/1608813)過去にプロセスのライフサイクルの初期化に使用されていた
ContentProviderでtools:node="remove"を使用していた場合は、以下のようにする必要があります。<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.work.impl.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(または)
<!-- If you want to disable android.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API の変更
- ListenableWorker の
outputDataを返すResult.getOutputData()API を追加しています。(Ie51e3)
バグの修正
AlarmManagerAPI の使用時にSecurityExceptionがスローされる原因となる OEM バグの回避策を追加しています。(aosp/1587518)
バージョン 2.5.0
バージョン 2.5.0
2021 年 1 月 27 日
androidx.work:work-*:2.5.0 がリリースされました。バージョン 2.5.0 に含まれる commit については、こちらをご覧ください。
2.4.0 以降の主な変更
- 複数のプロセスを使用するアプリ用の新しい
:work:work-multiprocessアーティファクト。作業リクエストのスケジュールを単一のプロセスに統合することで、パフォーマンスが向上します。work-multiprocessを使用するには、implementation "androidx.work:work-multiprocess:2.5.0"への依存関係を定義します。- Configuration.Builder.setDefaultProcessName(String) を使用してメインプロセスを指定します。
work-multiprocessを使用する場合、RemoteWorkManager を使用してWorkRequestを管理することもできます。RemoteWorkManager は、指定されたプロセスと常にやりとりしています。また、インプロセス スケジューラも指定されたプロセスで実行されます。
ActivityManagerは、ジョブを開始するためにJobServiceインスタンスをインスタンス化できないことがあります。その場合、プラットフォームのバグが原因で基盤となるジョブが暗黙的にドロップされます。WorkManagerがジョブを調整することにより、Applicationの初期化時にすべてのWorkRequestに対してバッキング ジョブが用意されるようになりました。これにより、ジョブ実行の信頼性が大幅に向上します。(b/172475041、aosp/1489577)WorkManagerは、WorkRequestの完了後にWorkRequestを追跡するバッファ期間を短くすることにより、データベースの増大を制限します。バッファ期間は以前は7日間でしたが、keepResultsForAtLeast の期間に1日を足した期間に短縮されました。(aosp/1419708)- テストを容易にするために、
ListenableWorkerを拡張する具体化されたクラスをTestListenableWorkerBuilderがサポートするようになりました。(aosp/1443299、b/169787349) - Android Studio Arctic Fox の使用時に WorkManager Inspectorを使用できるようになりました。
バージョン 2.5.0-rc01
2021 年 1 月 13 日
androidx.work:work-*:2.5.0-rc01 がリリースされました。バージョン 2.5.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
WorkQueryベースの API を使用すると、エンティティ更新後にgetWorkInfosLiveDataが正しく無効化されないバグを修正しました。(aosp/1540566、b/173769028)- まれに発生する一部のケースで、データベースのトランザクションが成功と記録されなかったバグを修正しました。このバグにより Motorola デバイスの一部で問題が発生します。(aosp/1535368、b/175944460)
- 終了したプロセスからアンバインドしようとするときに
NoSuchElementExceptionを無視するようにバグを修正しました。(aosp/1530589) ListenableWorkerが未停止の場合にのみ停止させるようConstraintTrackingWorkerを改善しました。(aosp/1496844、b/172946965)- Java 8 を対象とするように androidx.work ライブラリを更新しました。(Ibd2f2)
バージョン 2.5.0-beta02
2020 年 12 月 2 日
androidx.work:work-*:2.5.0-beta02 がリリースされました。バージョン 2.5.0-beta02 に含まれる commit については、こちらをご覧ください。
バグの修正
- 指定されたプロセスにバインドするときに WorkManager が呼び出し元スレッドを誤ってブロックする
androidx.work:work-multiprocessのバグを修正しました。(aosp/1475538) PeriodicWorkRequestが正しく調整されないバグを修正しました。(b/172475041、aosp/1489577)setForeground*API の使用時にフォアグラウンド サービスを停止する際のプラットフォームのバグに対する回避策を追加しました。(b/170924044、aosp/1489901)
バージョン 2.5.0-beta01
2020 年 10 月 28 日
androidx.work:work-*:2.5.0-beta01 がリリースされました。バージョン 2.5.0-beta01 に含まれる commit については、こちらをご覧ください。
新機能
- インプロセス スケジューラで選択できる
WorkRequestの数をWorkManagerが自動的にスロットルします。リクエストは引き続き FIFO 順で実行されます。(aosp/1455228) - アプリケーションのデータストアが異常な状態にあるときに
WorkManagerが復元を試みます。(aosp/1463103)
バグの修正
ListenableWorkerが中断されたときに、すぐにENQUEUEDのマークを付けることで、後で再スケジュールできるようにします。(aosp/1455618、b/170273988)
バージョン 2.5.0-alpha03
2020 年 10 月 14 日
androidx.work:work-*:2.5.0-alpha03 がリリースされました。バージョン 2.5.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
TestListenableWorkerBuilderとTestWorkerBuilderは未加工型を使用しません。(I883ad、b/169787349)
バグの修正
ApplicationInfoを使用して、デフォルトのアプリのプロセスの名前を判別します。(b/168716641、aosp/1429950)RemoteWorkManagerとRemoteWorkContinuationの公開設定ルールを修正しました。これらの API は@Restrictedとしてマークされなくなりました。(aosp/1432091):work:work-multiprocessの ProGuard ルールを修正しました。(aosp/1432091)- フォアグラウンド サービスにバインドされている実行時間が長い処理の通知ライフサイクルを改善しました。(b/168502234、aosp/1431331)
バージョン 2.5.0-alpha02
2020 年 9 月 16 日
androidx.work:work-*:2.5.0-alpha02 がリリースされました。バージョン 2.5.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
idを使用してWorkInfoをクエリできるように、WorkQuery に API を追加します。(aosp/1412372、b/157335295)- WorkManager は、新しいアーティファクト(
androidx.work:work-multiprocess:*)で複数のプロセスを使用するアプリのサポートを強化します。この新しいアーティファクトにより、大規模アプリで発生する次のような問題を解決できます。- 通常、WorkManager はすべてのアプリプロセスで初期化する必要があります。SQLite の競合が増え、他の問題が生じるため、あまり好ましくありません。今回 WorkManager に新しい API が追加され、
Configuration#setDefaultProcessName(processName)を使用して primary アプリプロセスを指定できるようになりました。processNameは、packageName:processNameのような完全修飾プロセス名です(例:com.example:remote)。 - 新しい API のセット: 作業リクエストの
enqueue、cancel、queryを行うRemoteWorkManagerとRemoteWorkContinuation。これらの API にLiveDataバリアントは含まれないため、マルチプロセス全体で SQLite の競合を避けることができます。enqueue、cancel、queryに対する呼び出しはすべて、AIDL を使用してprimaryアプリプロセスに転送され、フルーエントなListenableFutureが返されます。(aosp/1392657、aosp/1411210、aosp/1412215、aosp/1417713)
- 通常、WorkManager はすべてのアプリプロセスで初期化する必要があります。SQLite の競合が増え、他の問題が生じるため、あまり好ましくありません。今回 WorkManager に新しい API が追加され、
API の変更
- WorkManager が、不完全な依存関係を持たない完了した
WorkRequestを、さらに積極的にプルーニングするようになりました。バッファの期間を7日間から1日に変更しました。(aosp/1419708)
バグの修正
- WorkManager は、
WorkManagerの初期化時にWorkRequestとJobSchedulerのジョブが同期されるように、ジョブを事前に調整するようになりました。(aosp/1412794、b/166292069)
バージョン 2.5.0-alpha01
2020 年 8 月 19 日
androidx.work:work-*:2.5.0-alpha01 がリリースされました。バージョン 2.5.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
- 内部 API を変更して、今後
WorkManagerでより適切なツールを提供できるようにしました。情報のアップデートをお待ちください。
バグの修正
- 一部のデバイスでネットワーク状態をトラッキングする際に
SecurityExceptionを処理するようにしました。(aosp/1396969)
外部からの協力
バージョン 2.4.0
バージョン 2.4.0
2020 年 7 月 22 日
androidx.work:work-*:2.4.0 がリリースされました。バージョン 2.4.0 に含まれる commit については、こちらをご覧ください。
2.3.0 以降の主な変更
WorkManagerのインプロセス スケジューラがより機能的になりました。これまでインプロセスSchedulerは、遅延がなく制約が満たされている作業の実行を考慮するだけでした。インプロセス スケジューラが、PeriodicWorkRequest を含め、今後実行される可能性のあるWorkRequestをトラッキングするようになりました。またインプロセスSchedulerには、スケジューリングの制限が適用されません(ただし、WorkManager で使用しているExecutorのサイズには引き続き制限されます)。これにより、アプリがフォアグラウンドにあるとき、より多くの WorkRequest を実行できるようになりました。また、遅延作業のフォアグラウンドでの実行を管理するために、設定可能な新しいRunnableSchedulerがWorkManagerに導入されています。(aosp/1185778)- WorkManager は RxJava 3 をサポートするようになりました。RxJava 3 を使用するには、依存関係
implementation "androidx.work:work-rxjava3:2.4.0"を含める必要があります。(aosp/1277904) WorkQueryを使用してWorkInfoをクエリする機能を追加しました。これは、デベロッパーが複数の属性を組み合わせてWorkInfoをクエリする場合に便利です。詳しくは、WorkQuery.Builder.fromStates(...)、WorkQuery.Builder. fromTags(...)、またはWorkQuery.Builder.fromUniqueWorkNames(...)をご覧ください。(aosp/1253230、b/143847546)次のコマンドを使用して
WorkManagerに診断情報を要求する機能が追加されました。adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"これにより、次のような多くの有用な情報が得られます。
- 24 時間以内に完了した WorkRequest。
- 現在実行中の WorkRequest。
- スケジュール設定された WorkRequest。(aosp/1235501)
ExistingWorkPolicy.APPEND_OR_REPLACEが追加されました。これはAPPENDに似ていますが、キャンセルされたか前提条件が満たされなかったチェーンを置き換えます。(b/134613984、aosp/1199640)今後実行する必要がある WorkRequest をトラッキングするためのカスタムの
RunnableSchedulerを追加する機能が用意されました。この機能はインプロセス スケジューラで使用します。(aosp/1203944)DelegatingWorkerFactoryを使用するときに委任先のファクトリを動的に追加するためのサポートを追加しました。(b/156289105、aosp/1309745)BATTERY_NOT_LOW制約のトラッキングを、より厳密にプラットフォームに合わせて調整しました。(aosp/1312583)インプロセス スケジューラは、より適切な API を使用してプロセスの名前を判別するようになりました。複数のプロセスを使用するアプリをより適切にサポートするのに役立ちます。(aosp/1324732)
下記を強制する新しい Lint ルール。
setForegroundAsync()API を使用する場合の適切なforegroundServiceTypeの使用。(b/147873061、aosp/1215915)- JobService API を直接使用するときに WorkManager が使用する JobScheduler ID の指定。(aosp/1223567)
- デフォルトの
WorkerFactoryを使用する場合、ListenableWorker実装が必ずpublicになることを保証する新しい lint ルールを追加しました。(aosp/1291262)
ListenableWorkerの完了前に完了しないsetForegroundAsync()の呼び出しは、返されるListenableFutureのIllegalStateExceptionによって通知されるようになりました。(aosp/1262743)フォアグラウンドの
Workerが中断された後、ForegroundServiceが停止しないバグを修正しました。(b/155579898、aosp/1302153)WorkManagerが、フォアグラウンド サービスにバインドされたWorkerの複数のインスタンスを実行しようとするバグを修正しました。(b/156310133、aosp/1309853)
バージョン 2.4.0-rc01
2020 年 6 月 24 日
androidx.work:work-*:2.4.0-rc01 がリリースされました。バージョン 2.4.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
- インプロセス スケジューラは、より適切な API を使用してプロセスの名前を判別するようになりました。複数のプロセスを使用するアプリをより適切にサポートするのに役立ちます。(aosp/1324732)
バージョン 2.4.0-beta01
2020 年 5 月 20 日
androidx.work:work-gcm:2.4.0-beta01、androidx.work:work-runtime:2.4.0-beta01、androidx.work:work-runtime-ktx:2.4.0-beta01、androidx.work:work-rxjava2:2.4.0-beta01、androidx.work:work-testing:2.4.0-beta01 がリリースされました。バージョン 2.4.0-beta01に含まれる commit については、こちらをご覧ください。
バグの修正
- フォアグラウンドの
Workerが中断された後、ForegroundServiceが停止しないバグを修正しました。(b/155579898、aosp/1302153) WorkManagerが、フォアグラウンド サービスにバインドされたWorkerの複数のインスタンスを実行しようとするバグを修正しました。(b/156310133、aosp/1309853)DelegatingWorkerFactoryを使用するときに委任先のファクトリを動的に追加するためのサポートを追加しました。(b/156289105、aosp/1309745)BATTERY_NOT_LOW制約のトラッキングを、より厳密にプラットフォームに合わせて調整しました。(aosp/1312583)
バージョン 2.4.0-alpha03
2020 年 4 月 29 日
androidx.work:work-*:2.4.0-alpha03 がリリースされました。バージョン 2.4.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- WorkManager は RxJava 3 をサポートするようになりました。RxJava 3 を使用するには、依存関係
implementation "androidx.work:work-rxjava3:2.4.0-alpha03"を含める必要があります。(aosp/1277904) - デフォルトの
WorkerFactoryを使用する場合、ListenableWorker実装が必ずpublicになることを保証する新しい lint ルールを追加しました。(aosp/1291262)
API の変更
ListenableWorkerの実行が終了した後にsetProgressAsync()を呼び出すと、ListenableFutureを介してExceptionに通知されるようになりました。(aosp/1285494)WorkQuery.Builderがfinalとしてマークされるようになりました。(aosp/1275037)WorkQuery.Builderファクトリ メソッドwithStates、withTags、withUniqueWorkNamesの名前が、それぞれfromStates、fromTags、fromUniqueWorkNamesに変更されました。(aosp/1280287)
バグの修正
- デバイスのネットワーク状態をトラッキングする際に
SecurityExceptionを無視します。(b/153246136、aosp/1280813)
バージョン 2.4.0-alpha02
2020 年 4 月 1 日
androidx.work:work-*:2.4.0-alpha02 がリリースされました。バージョン 2.4.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
WorkRequestがConstraints.setRequiresCharging(...)とConstraints.setRequiresDeviceIdle(...)の両方を必要とする場合に警告する、新しい Lint ルールを追加しました。一部のデバイスでは、充電とアイドリングが同時に行われません。そのため、このようなリクエストが行われる頻度は予想よりも低くなります。(aosp/1253840)
API の変更
WorkQueryを使用してWorkInfoをクエリする機能を追加しました。これは、デベロッパーが複数の属性を組み合わせてWorkInfoをクエリする場合に便利です。詳しくは、WorkQuery.Builder withStates(...)、WorkQuery.Builder withTags(...)、またはWorkQuery.Builder withUniqueWorkNames(...)をご覧ください。(aosp/1253230、b/143847546)ListenableWorkerの完了前に完了しないsetForegroundAsync()の呼び出しは、返されるListenableFutureのIllegalStateExceptionによって通知されるようになりました。(aosp/1262743)
バグの修正
PeriodicWorkRequestの間隔に無効な期間が設定されていないことを確認する lint ルールを修正しました。(aosp/1254846、b/152606442)
バージョン 2.4.0-alpha01
2020 年 3 月 4 日
androidx.work:work-*:2.4.0-alpha01 がリリースされました。バージョン 2.4.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
WorkManagerのインプロセス スケジューラがより機能的になりました。これまでインプロセス スケジューラは、遅延がなく制約が満たされている作業の実行を考慮するだけでした。インプロセス スケジューラが、PeriodicWorkRequestを含め、今後実行される可能性のあるWorkRequestをトラッキングするようになりました。またインプロセス スケジューラは、スケジューリングの制限を遵守しません(ただし、WorkManager で使用しているExecutorのサイズには引き続き制限されます)。これにより、アプリがフォアグラウンドにあるとき、より多くのWorkRequestを実行できるようになりました。(aosp/1185778)adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"を使用して WorkManager から診断情報をリクエストする機能が追加されました。これにより、次のような多くの有用な情報が得られます。- 24 時間以内に完了した WorkRequest。
- 現在実行中の WorkRequest。
- スケジュール設定された WorkRequest。(aosp/1235501)
下記を強制する新しい Lint ルール。
setForegroundAsync()API を使用する場合の適切なforegroundServiceTypeの使用。(b/147873061、aosp/1215915)JobServiceAPI を直接使用するときにWorkManagerが使用するJobSchedulerID の指定。(aosp/1223567)
API の変更
ExistingWorkPolicy.APPEND_OR_REPLACEが追加されました。これはAPPENDに似ていますが、キャンセルされたか前提条件が満たされなかったチェーンを置き換えます。(b/134613984、aosp/1199640)今後実行する必要がある
WorkRequestをトラッキングするため、カスタムRunnableSchedulerを追加できる機能を提供。この機能はインプロセス スケジューラで使用します。(aosp/1203944)
バグの修正
RxWorkerのsetProgress()はSingle<Void>という使用不可の型を返していたため、非推奨にしました。代わりにCompletableを返す新しい APIsetCompletableProgress()を追加しました。また、新しい API への移行に役立つ新しい lint ルールを追加しました。(b/150080946、aosp/1242665)
バージョン 2.3.4
バージョン 2.3.4
2020 年 3 月 18 日
androidx.work:work-*:2.3.4 がリリースされました。バージョン 2.3.4 に含まれる commit については、こちらをご覧ください。
バグの修正
- 長時間実行
Workerの複数インスタンスが、10 分間の実行時間枠を超えた後に実行されるバグを修正しました。(aosp/1247484、b/150553353) - WorkManager の lint
IssueRegistryの修正。Slack の @ZacSweers さん、ご協力ありがとうございました。(aosp/1217923)
バージョン 2.3.3
バージョン 2.3.3
2020 年 3 月 4 日
androidx.work:work-*:2.3.3 がリリースされました。バージョン 2.3.3 に含まれる commit については、こちらをご覧ください。
バグの修正
- 中断された
Workerのスケジュールが正しく更新されないバグを修正しました。(b/150325687、aosp/1246571)
バージョン 2.3.2
バージョン 2.3.2
2020 年 2 月 19 日
androidx.work:work-*:2.3.2 がリリースされました。バージョン 2.3.2 に含まれる commit については、こちらをご覧ください。
バグの修正
- WorkManager がまれに JobScheduler の 100 件のジョブ制限を超える問題を修正しました。(aosp/1226859、b/149092520)
- ConstraintControllers の競合状態を修正しました。(aosp/1220100)
- 長時間実行 Workers の管理フォアグラウンド サービスのライフサイクルを改善しました。(aosp/1226295)
- ワーカーのキャンセル時における、長時間実行ワーカーへの通知のキャンセルの管理を改善しました。(aosp/1228346)
バージョン 2.3.1
バージョン 2.3.1
2020 年 2 月 5 日
androidx.work:work-*:2.3.1 がリリースされました。バージョン 2.3.1 に含まれる改善点については、こちらをご覧ください。
バグの修正
- フォアグラウンド
Serviceがアクティブな場合に実行される、長時間実行WorkerのNotificationのライフサイクル管理を改善しました。(aosp/1218539、b/147249312) WorkManagerがandroidx.sqlite:sqlite-framework:2.1.0安定版に依存するようになりました。(aosp/1217729)ForegroundInfoでforegroundServiceTypeを使用するときにAndroidManifest.xmlでforegroundServiceTypeが指定されていることを確認する lint ルールを追加しました。(aosp/1214207、b/147873061)
バージョン 2.3.0
バージョン 2.3.0
2020 年 1 月 22 日
androidx.work:work-*:2.3.0 がリリースされました。2.3.0-rc01 からの変更はありません。バージョン 2.3.0 に含まれる commit については、こちらをご覧ください。
2.2.0 以降の重要な変更
ListenableWorker#setForegroundAsync()を介した長時間実行または重要な作業のサポート。ListenableWorker#setProgressAsync()を介したワーカー進行状況のサポート。- WorkManager は、バグの早期発見に役立つ追加の lint ルールをライブラリの一部としてパッケージ化するようになりました。
バージョン 2.3.0-rc01
2020 年 1 月 8 日
androidx.work:work-*:2.3.0-rc01 がリリースされました。バージョン 2.3.0-rc01 に含まれる commit については、こちらをご覧ください。
このリリースは 2.3.0-beta02 と同一です。
バグの修正
work-testingアーティファクトは、work-runtime-ktxのapi依存関係を定義するようになりました。(aosp/1194410)
バージョン 2.3.0-beta02
2019 年 12 月 18 日
androidx.work:work-*:2.3.0-beta02 がリリースされました。バージョン 2.3.0-beta02 に含まれる commit については、こちらをご覧ください。
新機能
- リカバリ不能 SQLite 例外のエラー メッセージが改善されました。(aosp/1185777)
- オンデマンド初期化を使用するときに、コンテンツ プロバイダ
androidx.work.impl.WorkManagerInitializerがAndroidManifest.xmlから削除されるようにする lint ルールが追加されました(aosp/1167007) PeriodicWorkRequestでenqueueUniquePeriodicWork()の代わりにenqueue()が使用される場合の lint 警告を追加しました。(aosp/1166032)
API の変更
ForegroundInfoでは、ListenableWorker.setForegroundAsync()使用時にnotificationIdを使用するように指定する必要があります。これは互換性を破る変更です。これにより、複数の長時間実行のWorkerを並行して実行できます。また、WorkManagerは、指定されたNotificationのライフタイムを適切に管理します。(b/145473554、aosp/1181208、asop/1181216、asop/1183577)
バグの修正
- アラームが正しくクリーンアップされないという AlarmManager 実装のバグを修正しました。(aosp/1156444)
WorkRequestの空のリストにより、誤ったWorkContinuationチェーンが作成されるバグを修正しました。(b/142835274、aosp/1157051)
依存関係の変更
- WorkManager で Room 2.2.2 が使用されるようになりました。
バージョン 2.3.0-beta01
2019 年 11 月 20 日
androidx.work:work-*:2.3.0-beta01 がリリースされました。バージョン 2.3.0-beta01 に含まれる commit については、こちらをご覧ください。
新機能
- 新しい lint ルールを追加しました。オンデマンド初期化の使用時に
androidx.work.Configuration.Providerの不適切な実装によるデベロッパー エラーを防ぎます。(aosp/1164559)
バージョン 2.3.0-alpha03
2019 年 10 月 23 日
androidx.work:work-*:2.3.0-alpha03 がリリースされました。バージョン 2.3.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
WorkManager.createCancelPendingIntent()API を追加しました。この API を使用すると、AndroidManifest.xmlに別のコンポーネントを登録しなくてもWorkRequestを簡単にキャンセルできます。特にNotificationのWorkRequestのキャンセルが簡単に行えます。これは、2.3.0 の新しいフォアグラウンド API と組み合わせる予定です。- WorkManager は
androidx.room:*:2.2.0安定版に依存するようになりました。
API の変更
- 基盤となるプラットフォーム API との整合性を保つため、
ForegroundInfo.getNotificationType()の名前をForegroundInfo.getForegroundServiceType()に変更しました。(b/142729893、aosp/1143316)
バグの修正
- トランザクションの外部で
setTransactionSuccessful()を不必要に呼び出すことで発生するバグを修正しました。これはまれな移行で発生します。(b/142580433、aosp/1141737)
バージョン 2.3.0-alpha02
2019 年 10 月 9 日
androidx.work:work-*:2.3.0-alpha02 がリリースされました。バージョン 2.3.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
- WorkManager は、OS によって維持されるべき長時間実行の処理または重要な処理の実行をサポートするようになりました。詳しくは、
ListenableWorker#setForegroundAsync()(Kotlin の場合はCoroutineWorker#setForeground())をご覧ください。(aosp/1133636)
API の変更
DataのcontainsKeyAPI の名前がhasKeyWithValueOfTypeに変更されました。ktxライブラリの対応する拡張メソッドの名前も変更されました。(b/141916545)
バグの修正
- キューに入れられた
WorkRequestの数がスケジューリングの制限に近づいた場合、WorkManager のスケジュールは正常に機能します。(aosp/1105766) - WorkManager は、処理がまだ完了していない場合にのみ
ListenableWorker#onStopped()を呼び出します。(b/140055777) - ワーカーが中断された場合、または終了状態になった場合に、WorkManager は進行状況情報を削除します。(aosp/1114572)
Dataに、非常に便利なtoString()表現が追加されました。(b/140945323)Dataに、より便利なequals()メソッドが追加されました。また、deepEquals型のArrayもサポートします。(b/140922528)- WorkManager は内部データベースと設定ファイルをバックアップなしのディレクトリに保存するようになりました。(b/114808216)
バージョン 2.3.0-alpha01
2019 年 8 月 22 日
androidx.work:work-*:2.3.September 5, 20190-alpha01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
ListenableWorkerでsetProgressAsync()API を使用して進行状況を設定できるようになりました。また、それに対応して、setProgressAPI のsuspend機能がCoroutineWorkerに、Single<Void>を返すsetProgressがRxWorkerに追加されました。Worker はこれらの新しい API を使用し、対応するgetProgressAPI を持つWorkInfoを介して進捗状況情報を伝えることができます。(b/79481554)DataのcontainsKey()API を使用すると、Workerへの入力データに期待される型のキーが含まれていることを検証できます。(b/117136838)Data.toByteArray()とData.fromByteArray()を使用してDataをシリアル化できるようになりました。Dataではバージョニングが保証されないため、このデータを保持したり、アプリ間の IPC で使用したりしないでください。これらのメソッドは、同じアプリの複数のプロセス間でのみ安全に使用できます。Configuration.setInputMergerFactoryを介してInputMergerFactoryを指定する機能が追加されました。(b/133273159)
API の変更
- 以前に呼び出された
ListenableWorkerのインスタンスをWorkerFactoryが返した場合、WorkManager がIllegalStateExceptionのインスタンスをスローするようになりました。(b/139554406) ListenableFutureのキャンセルと、ListenableWorkerのonStopped()コールバックについて、ドキュメントを更新しました。(b/138413671)
バグの修正
- 処理中の Scheduler が
idleに関する制約があるWorkRequestを無視するようになりました。これらのリクエストは現在、デバイスが実際にidleの状態の場合にのみ、JobSchedulerによって選択されます。(aosp/1089779) - テストの際に、
TestSchedulerが内部タスクのエグゼキュータに指定されたExecutorを正しく使用するようになりました。(aosp/1090749)
バージョン 2.2.0
バージョン 2.2.0
2019 年 8 月 15 日
androidx.work:work-*:2.2.0 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
このリリースは androidx.work:work-*:2.2.0-rc01 と同一です。
2.2.0 の 2.1.0 からの重要な変更
androidx.work:work-gcm:2.2.0 は、Google Play 開発者サービスが API レベル 22 以下で使用可能な場合に GCMNetworkManager をスケジューラとして使用できるようにするための新しい Maven アーティファクトです。これはオプションの依存関係であり、古い API バージョンにおけるバックグラウンド処理の信頼性とパフォーマンスの向上に役立ちます。アプリで Google Play 開発者サービスを使用している場合、この依存関係を Gradle ファイルに追加することで、GCMNetworkManager が自動的にサポートされるようになります。Play 開発者サービスを使用できない場合、古いデバイスではこれまでどおり WorkManager が AlarmManager に切り替わります。
バージョン 2.2.0-rc01
2019 年 7 月 30 日
androidx.work:work-*:2.2.0-rc01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
バグの修正
- サービスを通常より早くシャットダウンし、まれに
RejectedExecutionExceptionを発生させる、AlarmManager の実装のバグを修正しました。(aosp/1092374)(b/138238197) - 一部のデバイスで
JobSchedulerAPI を使用している場合に発生するNullPointerExceptionの回避策を追加しました。(aosp/1091020)(b/138364061)(b/138441699)
バージョン 2.2.0-beta02
2019 年 7 月 19 日
androidx.work:work-*:2.2.0-beta02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
バグの修正
2.2.0-beta01で導入された意図しない JaCoCo 依存関係を削除しました。
バージョン 2.2.0-beta01
2019 年 7 月 17 日
androidx.work:work-*:2.2.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
androidx.work:work-gcm:2.2.0-beta01は、Google Play 開発者サービスが API レベル 22 以下で使用可能な場合に GCMNetworkManager をスケジューラとして使用できるようにするための新しい Maven アーティファクトです。これはオプションの依存関係であり、古い API バージョンにおけるバックグラウンド処理の信頼性とパフォーマンスの向上に役立ちます。アプリで Google Play 開発者サービスを使用している場合、この依存関係を Gradle ファイルに追加することで、GCMNetworkManager が自動的にサポートされるようになります。Play 開発者サービスを使用できない場合、古いデバイスではこれまでどおり WorkManager が AlarmManager に切り替わります。
バグの修正
- Nvidia Shield K1 タブレットでネットワークの状態を追跡しているときに
IllegalArgumentExceptionが発生する問題を修正しました。(aosp/1010188)
バージョン 2.1.0
バージョン 2.1.0
2019 年 7 月 11 日
androidx.work:work-*:2.1.0 がリリースされました。このリリースは androidx.work:work-*:2.1.0-rc01 と同一です。
2.0.1 以降の重要な変更
work-runtime-ktxには Java 8 が必要になりました。問題が発生した場合は、build.gradleにkotlinOptions { jvmTarget = "1.8" }を追加できます。- WorkManager のオンデマンド初期化が追加されました。オンデマンド初期化では、参照されたときにのみ WorkManager を作成します(b/127497100)。オンデマンド初期化に対応するためにプロジェクトを設定する手順は次のとおりです。
- 自動イニシャライザを無効にします。
- カスタム
ApplicationオブジェクトにConfiguration.Providerを実装します。 WorkManager.getInstance()のすべての参照をWorkManager.getInstance(Context)に変更します。この変更の一環として、WorkManager.getInstance()のサポートが終了しました。オンデマンド初期化を行わない場合でも、新しいWorkManager.getInstance(Context)を呼び出すことで常により高い安全性が得られます。
PeriodicWorkRequestが初期遅延をサポートするようになりました。初期遅延を設定するには、PeriodicWorkRequest.BuilderのsetInitialDelayメソッドを使用します。b/111404867DelegatingWorkerFactoryを使用して 1 つ以上の登録済みのWorkerFactoryにデリゲートする機能が追加されました。b/131435993- WorkManager がそのすべての内部ブックキーピングに使用する
Executorを、Configuration.Builder.setTaskExecutorを介してカスタマイズする機能が追加されました。 work-testingアーティファクトでTestWorkerBuilderとTestListenableWorkerBuilderを使用して、単体テストが可能なWorkerクラスとListenableWorkerクラスを作成する機能を追加しました。work-testingは Kotlin を依存関係として取得するようになりました。このアーティファクトにはデフォルトで複数の Kotlin 拡張機能が含まれています。
WorkInfoに実行試行回数が追加されました。b/127290461Data型でバイトおよびバイト配列の格納と取得を行えるようになりました。ただし、Dataオブジェクトの最大サイズに変更はありません。- WorkManager が
Room 2.1.0に依存するようになりました。これにより、データベースに関する問題がいくつか解決します。
バージョン 2.1.0-rc01
2019 年 6 月 27 日
androidx.work:work-*:2.1.0-rc01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
バグの修正
- バックアップ中に
JobSchedulerを使用してジョブを実行した場合にアプリがクラッシュするバグを修正しました。b/135858602
バージョン 2.1.0-beta02
2019 年 6 月 20 日
androidx.work:work-*:2.1.0-beta02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
バグの修正
TestListenableWorkerBuilderがListenableWorkerのインスタンスを作成する際に適切なWorkerFactoryを使用するようになりました。b/135275844- プロセスの終了が原因で
WorkRequestの実行時間にブレが生じるバグを修正しました。b/135272196
バージョン 2.1.0-beta01
2019 年 6 月 13 日
androidx.work:work-*:2.1.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
バグの修正
- WorkManager が
Room 2.1.0に依存するようになりました。これにより、データベースに関する問題がいくつか解決します。 - メインスレッド上の一部の起動ディスク I/O を削除しました。
- 制約の追跡時の潜在的なデッドロックを修正しました。b/134361006
- WorkManager に起因する無効なジョブをあらかじめキャンセルするようにしました。b/134058261
- 不正な動作をするデバイスに対処するために、JobScheduler API の防御的な呼び出しが追加されました。
バージョン 2.1.0-alpha03
2019 年 6 月 5 日
androidx.work:*:2.1.0-alpha03 がリリースされました。
バグの修正
PeriodicWorkRequestに関するドキュメントを修正しました。WorkManagerTestInitHelperでテスト用の正しいバックグラウンド エグゼキュータを使用するようになりました。- 一部のデバイスで大規模なトランザクションを処理する際に発生する SQLite の問題を修正しました。b/130182503
- WorkManager の依存関係がよりきめ細かくなりました。b/133169148
- WorkManager を使用してジョブのスケジュールを設定する際に発生する、
JobSchedulerの実装における OEM 固有のバグを回避できるようになりました。 - 以前にまれにクラッシュを発生させていた、AlarmManager ベースのサービス期間のスケジューラを改良しました。b/133313734
バージョン 2.1.0-alpha02
2019 年 5 月 16 日
WorkManager 2.1.0-alpha02 がリリースされました。このバージョンには新しい API がいくつか含まれています。
API の変更
PeriodicWorkRequestが初期遅延をサポートするようになりました。初期遅延を設定するには、PeriodicWorkRequest.BuilderのsetInitialDelayメソッドを使用します。b/111404867DelegatingWorkerFactoryを使用して 1 つ以上の登録済みのWorkerFactoryにデリゲートする機能が追加されました。b/131435993WorkManager がそのすべての内部ブックキーピングに使用する
Executorを、Configuration.Builder.setTaskExecutorを介してカスタマイズする機能が追加されました。WorkRequest.keepResultsForAtLeast(b/130638001)、オンデマンド初期化、PeriodicWorkRequest.Builder(b/131711394)に関するドキュメントを改善しました。
バージョン 2.1.0-alpha01
2019 年 4 月 24 日
WorkManager 2.1.0-alpha01 がリリースされました。このバージョンには新しい API がいくつか含まれています。 このバージョン以降、1.x リリースにバックポートされない新機能があるため、2.x に切り替えることをおすすめします。
API の変更
- WorkManager のオンデマンド初期化が追加されました。オンデマンド初期化では、参照されたときにのみ WorkManager を作成します(b/127497100)。オンデマンド初期化に対応するためにプロジェクトを設定する手順は次のとおりです。
- 自動イニシャライザを無効にします。
- カスタム
ApplicationオブジェクトにConfiguration.Providerを実装します。 WorkManager.getInstance()のすべての参照をWorkManager.getInstance(Context)に変更します。この変更の一環として、WorkManager.getInstance()のサポートが終了しました。オンデマンド初期化を行わない場合でも、新しいWorkManager.getInstance(Context)を呼び出すことで常により高い安全性が得られます。
work-testingアーティファクトでTestWorkerBuilderとTestListenableWorkerBuilderを使用して、単体テストが可能なWorkerクラスとListenableWorkerクラスを作成する機能を追加しました。work-testingは Kotlin を依存関係として取得するようになりましたが、このアーティファクトにはデフォルトで複数の Kotlin 拡張機能も含まれています。
WorkInfoに実行試行回数が追加されました。b/127290461Data型でバイトおよびバイト配列の格納と取得を行えるようになりました。ただし、Dataオブジェクトの最大サイズに変更はありません。CoroutineWorker.coroutineContextを非推奨にしました。このフィールドは誤ってCoroutineDispatcherとして型付けされていましたが、suspend 関数の本文で目的の coroutineContext にアクセスできるようになったため、今後このフィールドは不要になります。RxWorker.createWork()とRxWorker.getBackgroundScheduler()のアノテーションに戻り値の型@NonNullを使用できるようになりました。
バージョン 2.0.1
バージョン 2.0.1
2019 年 4 月 9 日
WorkManager 2.0.1 がリリースされました。このリリースは 2.0.1-rc01 とまったく同じです。
バージョン 2.0.1-rc01
2019 年 4 月 3 日
WorkManager 2.0.1-rc01 がリリースされました。このバージョンにはバグの修正がいくつか含まれています。従来の 1.x ユーザーの場合、1.0.1-rc01 でも変更の一部が適用されます。
バグの修正
- WorkManager により、Robolectric テストが正常に動作するようになりました。b/122553577
- 制約のトラッキングが pre-JobScheduler API でクリーンアップされない場合のエッジケースのクラッシュを修正しました。b/129226383
- 長い処理チェーンを扱う際に発生する
StackOverflowErrorを修正しました。b/129091233 PeriodicWorkRequestのドキュメントを更新し、API 23 ではフレックス タイムがサポートされないことを明記しました。- Kotlin ドキュメント内の無効なリンクをいくつか修正しました。
バージョン 2.0.0
バージョン 2.0.0
2019 年 3 月 20 日
WorkManager 2.0.0 がリリースされました。このバージョンは 2.0.0-rc01 とまったく同じであり、AndroidX の依存関係を持つ AndroidX 1.0.0 安定版です。従来の 1.x バージョンではなく、このバージョンをターゲットとすることをおすすめします。今後、アクティブな開発はすべて 2.x をターゲットとし、1.x では重大なバグの修正のみを期間限定で受け入れる予定です。
バージョン 2.0.0-rc01
2019 年 3 月 7 日
WorkManager 2.0.0-rc01 がリリースされました。このバージョンは 1.0.0 安定版とまったく同じですが、AndroidX の依存関係を持っています。2.0.0 安定版のリリースの際には、このバージョンを含める必要があります。今後、従来の 1.x バージョンでは一部の重大なバグの修正のみを受け入れるようになり、アクティブな開発はすべて 2.x をターゲットとします。
AndroidX 以前の依存関係
リファレンス ドキュメント: Java
Groovy
dependencies { def work_version = "1.0.1" // (Java only) implementation "android.arch.work:work-runtime:$work_version" // Kotlin + coroutines implementation "android.arch.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "android.arch.work:work-rxjava2:$work_version" // optional - Test helpers androidTestImplementation "android.arch.work:work-testing:$work_version" }
Kotlin
dependencies { val work_version = "1.0.1" // (Java only) implementation("android.arch.work:work-runtime:$work_version") // Kotlin + coroutines implementation("android.arch.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("android.arch.work:work-rxjava2:$work_version") // optional - Test helpers androidTestImplementation("android.arch.work:work-testing:$work_version") }
バージョン 1.0.1
バージョン 1.0.1
2019 年 4 月 9 日
WorkManager 1.0.1 がリリースされました。このリリースは 1.0.1-rc01 とまったく同じです。
今後、1.x ブランチの更新はほとんど行われないため、WorkManager 2.x へのアップデートを強くおすすめします。また、1.x ライブラリ用の新しい API もリリースされません。
バージョン 1.0.1-rc01
2019 年 4 月 2 日
WorkManager 1.0.1-rc01 がリリースされました。このバージョンにはバグの修正がいくつか含まれています。
バグの修正
- WorkManager により、Robolectric テストが正常に動作するようになりました。b/122553577
- 制約のトラッキングが pre-JobScheduler API でクリーンアップされない場合のエッジケースのクラッシュを修正しました。b/129226383
- 長い処理チェーンを扱う際に発生する
StackOverflowErrorを修正しました。b/129091233
バージョン 1.0.0
バージョン 1.0.0
2019 年 3 月 5 日
これは WorkManager の 1.0.0 安定版リリースです。このバージョンの WorkManager は 1.0.0-rc02 とまったく同じです。
バージョン 1.0.0-rc02
2019 年 2 月 21 日
これは WorkManager の 1.0.0 安定版リリースの 2 番目のリリース候補です。 このリリースにはバグの修正が 2 つ含まれています。
バグの修正
アプリのクラッシュ後に
Workerが正しくスケジュール設定されるようになりました。b/124546316未確認の
ExceptionをスローするWorkerがFAILEDとして正しくマークされるようになり、アプリプロセスがクラッシュしなくなりました。
バージョン 1.0.0-rc01
2019 年 2 月 14 日
これは WorkManager の 1.0.0 安定版リリースのリリース候補です。 このリリースにはバグの修正が 1 つ含まれています。
バグの修正
- AlarmManager ベースの実装が PeriodicWorkRequest の
flex期間を適切に考慮するようになりました。b/124274584
バージョン 1.0.0-beta05
2019 年 2 月 6 日
このリリースにはバグの修正がいくつか含まれています。
バグの修正
JobScheduler.getPendingJob(...)が API 23 で使用されていた問題を修正しました。b/123893059- Android 5.1(API レベル 22)以下が搭載されているデバイスで
NullPointerExceptionが発生する問題を修正しました。b/123835104
バージョン 1.0.0-beta04
2019 年 2 月 4 日
このリリースにはバグの修正がいくつか含まれています。
バグの修正
- AlarmManager ベースの実装での PeriodicWork のスケジュール設定を改善しました。
- AlarmManager ベースの実装を使用している場合に WorkManager が制約を適切にトラッキングできない問題を修正しました。b/123379508
- AlarmManager ベースの実装を使用している場合に WorkManager がプロセス終了の処理を再試行できない問題を修正しました。b/123329850
- AlarmManager ベースの実装を使用している場合に WorkManager が Wakelock をリークする問題を修正しました。
バージョン 1.0.0-beta03
2019 年 1 月 25 日
このリリースにはバグの修正がいくつか含まれています。
バグの修正
1.0.0-beta02で回帰が発生していました(それが原因で、特定の状況で処理が正常に実行されていませんでした)。b/123211993- 作業においてバックオフのタイミングが適切に考慮されない問題を修正しました。b/122881597
- Android 5.1 以下が搭載されているデバイスで
ConcurrentModificationExceptionが発生する問題を修正しました。これは1.0.0-beta02での修正の続きです。b/121345393 exported=falseが一部のコンポーネント(このアノテーションを使用していないコンポーネント)用としてマニフェストに追加されました。- WorkManager と OS 間のやり取りの方法に関する情報をパッケージ レベルのドキュメントに追加しました。
バージョン 1.0.0-beta02
2019 年 1 月 15 日
このリリースにはバグの修正がいくつか含まれています。
バグの修正
- Android 6.0(API レベル 23)が搭載されているデバイスで定期タスクがインターバルごとに複数回実行される可能性があるエッジケースを修正しました。b/121998363
- Android 5.1(API レベル 22)以下が搭載されているデバイスで
ConcurrentModificationExceptionが発生する問題を修正しました。b/121345393 - Android 5.1(API レベル 22)以下が搭載されているデバイスで制約条件が満たされていない場合に作業が誤って実行される問題を修正しました。b/122578012
- 一部のエッジケースにおける作業完了処理が高速になるように最適化しました。b/122358129
- WorkManager が使用する
LiveDataの複数のインスタンス間における潜在的な競合状態に対処するための変更を追加しました。 Roomの依存関係に1.1.1-rc01ではなく1.1.1を使用するよう移行しました(これらのバージョンはまったく同じものです)。b/122578011
バージョン 1.0.0-beta01
2018 年 12 月 19 日
このリリースには API の変更は含まれていません。今後、重大な問題が発生しない限り、WorkManager は次のバージョンまで安定版 API として使用される予定です。このリリースにはバグの修正がいくつか含まれています。
バグの修正
- 以前にキャンセルされた子は、その親の作業が正常に完了しても実行されなくなります。b/120811767
- ロギングクラスが適切に初期化されるようになりました(テスト中にメイン表示されるようになりました)。
バージョン 1.0.0-alpha13
2018 年 12 月 12 日
このリリースには、一部の Kotlin ユーザーにとって有用な、API の軽微な変更が含まれています。
API の変更
androidx.work.ResultがListenableWorkerの内部クラスになりました。これにより、Kotlin の最上位のResultクラスとのリファクタリングの競合が防止されます。これは API の互換性を破る変更です。b/120564418
API の互換性を破る変更
androidx.work.ResultがListenableWorkerの内部クラスになりました。
バージョン 1.0.0-alpha12
2018 年 12 月 5 日
このリリースには API の互換性を破る変更が含まれています。詳しくは、以下の「API の互換性を破る変更」をご覧ください。このバージョンは最初のベータ版としてリリースされる可能性があります。alpha12 ではドキュメントが広範にわたって更新されています。
API の変更
- 新しいアーティファクトである
work-rxjava2にRxWorkerが導入されました。これはSingle<Payload>を必要とするListenableWorkerです。 - Firebase JobDispatcher のサポートが削除されました(サポートの終了が差し迫っていたため)。それにより、
work-firebaseアーティファクトはベータ版では更新されなくなります。今後、代替手段の追加について検討する予定です。 PayloadがResultに統合されました。Resultは、3 つの具体的な実装を含む「シールクラス」になりました。このクラスは、Result.success()(またはResult.success(Data))、Result.failure()(またはResult.failure(Data))、Result.retry()を介して取得できます。ListenableFutureの結果はPayloadではなくResultになります。Workerには出力のData用の getter メソッドと setter メソッドはありません。これは互換性を破る変更です。Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)、Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)、および各種のバリアントが追加され、コンテンツ URI の低速トリガーに対するサポートが改善されました。b/119919774WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)のバリアントが追加されました。このメソッドには API 26 が必要です。- Kotlin 拡張メソッドの
Operation.await()とListenableFuture.await()が追加されました。 Operation.getException()の名前がOperation.getThrowable()に変更されました。これは互換性を破る変更です。ContentUriTriggersクラスとそれを参照するメソッドの一般使用ができなくなりました。これは互換性を破る変更です。- API の合理化のために、
WorkManager、WorkContinuation、OneTimeWorkRequestに含まれる他の可変長引数メソッドが削除されました。ビルドの問題を修正するには、既存の可変長引数をArrays.asList(...)でラップしてください。各メソッドの単一引数のバージョンは引き続き使用できます。これは互換性を破る変更です。 WorkContinuation.combine(OneTimeWorkRequest, *)のバリアントを削除しました。これは API を複雑なものにしていましたが、この変更により、既存のcombineメソッドの可読性が高まりました。これは互換性を破る変更です。
バグの修正
- Marshmallow 以前の実装における、実行中タスクのプロセス終了からの復元に関する信頼性が改善されました。
observeForeverで監視されているLiveDataが WorkManager で追跡されるようになりました。これは、Room ライブラリの修正を移植したものです。b/74477406- シリアル化されたオブジェクトがその最大サイズを超えた場合に、
Data.Builder.build()が例外をスローするようになりました。以前は、この例外のスローは、オブジェクトを適切に処理できないバックグラウンド スレッドでのみ行われていました。 - 処理の停止とキャンセルの区別がより明確になりました。
getWorkInfoById()はListenableWorker.onStopped()の実行中、StateをCANCELLEDに設定してWorkInfoを返します。 ListenableWorkerでnullResultがエラーとして処理されるようになりました。b/120362353- SHIELD Tablet で API 24 を実行しているときに
IllegalArgumentExceptionがスローされることがある問題に対し、理論的な修正が行われました。b/119484416
API の互換性を破る変更
- Firebase JobDispatcher のサポートが削除されました(サポートの終了が差し迫っていたため)。それにより、
work-firebaseアーティファクトはベータ版では更新されなくなります。今後、代替手段の追加について検討する予定です。 PayloadがResultに統合されました。Resultは、3 つの具体的な実装を含む「シールクラス」になりました。このクラスは、Result.success()(またはResult.success(Data))、Result.failure()(またはResult.failure(Data))、Result.retry()を介して取得できます。ListenableFutureの結果はPayloadではなくResultになります。Workerには出力のData用の getter メソッドと setter メソッドはありません。- Kotlin 拡張メソッドの
Operation.await()とListenableFuture.await()が追加されました。 Operation.getException()の名前をOperation.getThrowable()に変更しました。ContentUriTriggersクラスとそれを参照するメソッドの一般使用ができなくなりました。- API の合理化のために、
WorkManager、WorkContinuation、OneTimeWorkRequestに含まれる他の可変長引数メソッドが削除されました。ビルドの問題を修正するには、既存の可変長引数をArrays.asList(...)でラップしてください。各メソッドの単一引数のバージョンは引き続き使用できます。 WorkContinuation.combine(OneTimeWorkRequest, *)のバリアントを削除しました。API がわかりにくくなっていましたが、バリアントを削除した結果、既存のcombineメソッドがわかりやすくなりました。
バージョン 1.0.0-alpha11
2018 年 11 月 8 日
このリリースには、beta で安定版 API になる予定の変更が多数含まれています。また、このリリースには API の互換性を破る変更が含まれています。詳しくは、以下の「API の互換性を破る変更」をご覧ください。
API の変更
work-runtime-ktxに新しいCoroutineWorkerが導入されました。WorkStatusの名前をWorkInfoに変更しました。対応するgetStatusメソッドのすべてのバリアントの名前も、それぞれgetWorkInfoのバリアントに変更されています。これは互換性を破る変更です。ListenableWorker.onStopped()は、WorkRequestがキャンセルされたかどうかを表すブール値の引数を受け取らなくなりました。WorkManagerはこの区別をしなくなりました。これは互換性を破る変更です。androidx.work.testパッケージの名前がandroidx.work.testingパッケージに変更されました。これは互換性を破る変更です。Constraintsの setter が公開 API から除外されました。これは互換性を破る変更です。WorkerParameters.getTriggeredContentUris()とWorkerParameters.getTriggeredContentAuthorities()は以前は配列を返していましたが、コレクションを返すようになりました。これは互換性を破る変更です。ListenableWorker.onStartWork()の名前がListenableWorker.startWork()に変更されました。これは互換性を破る変更です。WorkStatusのコンストラクタが公開 API から除外されました。これは互換性を破る変更です。Configuration.getMaxJobSchedulerID()とConfiguration.getMinJobSchedulerID()の名前がそれぞれConfiguration.getMinJobSchedulerId()とConfiguration.getMaxJobSchedulerId()に変更されました。これは互換性を破る変更です。- 各種の
@NonNullアノテーションが公開 API に追加され、API の使いやすさが改善されました。 WorkManager.enqueueUniqueWork()API が追加され、WorkContinuationを作成せずに一意のOneTimeWorkRequestをキューに登録できるようになりました。WorkManagerのenqueueメソッドとcancelメソッドのすべてのバリアントが新しいOperation型を返すようになりました。これは互換性を破る変更です。enqueueのすべてのバリアントがWorkRequestの可変長引数を受け取らなくなりました。これは互換性を破る変更です。 代わりにコレクションを使用してください。Arrays.asList()を使用すると、既存のコードを変更できます。この変更は、API サーフェスとメソッドの数を減らすことを目的としています。- 各プロセスで
WorkManagerを複数回initializeしようとすると、IllegalStateExceptionが発生するようになりました。これは互換性を破る変更です。
バグの修正
work-runtime-ktxアーティファクトのWorkRequest.BuilderでListenableWorkerが使用されるようになりました。b/117666259PeriodicWorkの次回の実行時間が将来の時間に設定されるようになりました。b/118204399- WorkManager を使用している場合にアプリの起動時に発生する可能性があるディスク I/O が削除されました。b/117796731
WorkConstraintsTrackerでの競合状態を修正しました。android-workmanager/issues/56 を修正しました。
API の互換性を破る変更
WorkStatusの名前をWorkInfoに変更しました。対応するgetStatusメソッドのすべてのバリアントの名前も、それぞれgetWorkInfoのバリアントに変更されています。ListenableWorker.onStopped()は、WorkRequestがキャンセルされたかどうかを表すブール値の引数を受け取らなくなりました。WorkManagerはこの区別をしなくなりました。androidx.work.testパッケージの名前がandroidx.work.testingパッケージに変更されました。Constraintsの setter が公開 API から除外されました。WorkerParameters.getTriggeredContentUris()とWorkerParameters.getTriggeredContentAuthorities()は以前は配列を返していましたが、コレクションを返すようになりました。ListenableWorker.onStartWork()の名前がListenableWorker.startWork()に変更されました。WorkStatusのコンストラクタが公開 API から除外されました。Configuration.getMaxJobSchedulerID()とConfiguration.getMinJobSchedulerID()の名前がそれぞれConfiguration.getMinJobSchedulerId()とConfiguration.getMaxJobSchedulerId()に変更されました。WorkManagerのenqueueメソッドとcancelメソッドのすべてのバリアントが新しいOperation型を返すようになりました。enqueueのすべてのバリアントがWorkRequestの可変長引数を受け取らなくなりました。- 各プロセスで
WorkManagerを複数回initializeしようとすると、IllegalStateExceptionが発生するようになりました。
バージョン 1.0.0-alpha10
2018 年 10 月 11 日
このリリースでは、デベロッパーが管理する非同期タスクがサポートされています。また、このリリースには API の互換性を破る変更が含まれています。詳しくは、以下の「API の互換性を破る変更」をご覧ください。
Google は、WorkManager がアルファ版の最終段階に入ると予想しています。また、ベータ版では安定版 API になると期待しています。公開バグトラッカーでフィードバックをお送りください。
API の変更
- デフォルトの
Workerコンストラクタをはじめ、以前にdeprecatedしたすべてのメソッドとクラスが削除されました。これは API の互換性を破る変更です。 NonBlockingWorkerの名前がListenableWorkerに変更されました。この公開クラスは非表示が解除され、使用できる状態になっています。ListenableWorkerは、メインスレッドで呼び出される抽象メソッドの 1 つであるListenableFuture<Payload> onStartWork()へのアクセスを提供します。タスクを開始して非同期で処理できるようにするのはデベロッパーの責任です。タスクが完了したら、ListenableFutureを適宜更新する必要があります。ListenableFutureのリファレンス実装はalpha02のFuturesパッケージで提供されます(下記のWorkManagerのセクションをご覧ください)。WorkerはListenableWorkerを拡張したもので、以前と同じように動作します(Result doWork()抽象メソッドを使用)。Workerの一部のメソッドとメンバーがListenableWorkerに移動されました。- Google は、Kotlin のコルーチン(安定版がリリースされ次第)と RxJava2 を使用する、
ListenableWorkerのリファレンス実装をまもなく提供します。
- インターフェース(
WorkerFactory)と具体的な実装(DefaultWorkerFactory)が抽象クラス(WorkerFactory)に統合されました。この実装により、ユーザーが作成したすべてのWorkerFactoryインスタンスに対する最後の手段として、リフレクションに基づくデフォルトの動作が呼び出されるようになります。これは互換性を破る変更です。 WorkManager.synchronous()、WorkContinuation.synchronous()、および関連するすべてのメソッドが削除されました。API の各種メソッドの戻り値の型としてListenableFuture<Void>が追加されました。これは API の互換性を破る変更です。ListenableFutureを使用することで、取得と監視を同期させて行えるようになりました。たとえば、以前はvoidを返していたWorkManager.enqueue()は、ListenableFuture<Void>を返すようになりました。処理の完了後にListenableFuture.addListener(Runnable, Executor)またはListenableFuture.get()を呼び出してコードを実行できます。ListenableFutureでは処理が成功か失敗かを判断できません。判断できるのは、処理が終了したことだけです。処理が成功か失敗かを確認するには、WorkManager メソッドを連結する必要があります。- これらのオブジェクトでは、
cancel()の呼び出しは無視されます。その理由は、処理と、結果として生じる作業のどちらをキャンセルするかの判断が難しいためです。これはFutureコントラクト内で行われます。 getStatus*同期メソッドと同等の機能を引き続き提供できるようにするために、Google はListenableFutureのバリアントを提供し、LiveDataを返す既存のメソッドの名前を「LiveData」を明示的に含むものに変更しました(例:getStatusesByIdLiveData(UUID))。これは API の互換性を破る変更です。
バグの修正
- 重複する
androidx-annotations.proファイルに関する alpha09 からの既知の問題を修正しました。Gradle ファイルからexclude 'META-INF/proguard/androidx-annotations.pro'を削除することで、以前のリリースノートの回避策を削除できます。 - ProGuard の設定が追加され、新しい
Workerコンストラクタを保持できるようになりました。b/116296569 - 処理が
REPLACEされる競合状態での潜在的なNullPointerExceptionを修正しました。b/116253486、b/116677275 WorkContinuation.combine()が、2 つ以上ではなく 1 つ以上のWorkContinuationを受け取るようになりました。b/117266752
API の互換性を破る変更
- デフォルトの
Workerコンストラクタをはじめ、以前にdeprecatedしたすべてのメソッドとクラスが削除されました。 - インターフェース(
WorkerFactory)と具体的な実装(DefaultWorkerFactory)が抽象クラス(WorkerFactory)に統合されました。 WorkManager.synchronous()とWorkContinuation.synchronous()が削除されました。WorkManager.getStatus*()メソッドがListenableFutureを返すようになりました。また、WorkManager.getStatus*LiveData()がLiveDataを返すようになりました。
バージョン 1.0.0-alpha09
2018 年 9 月 19 日
既知の問題
「More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'」というエラー メッセージが表示される場合は、一時的な回避策として Gradle ファイルに以下のコードを挿入してください。この問題は alpha10 で修正します。
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
バグの修正
- 「100 jobs」というエラー メッセージが表示される場合に必要な別の修正が追加されました。b/115560696
- 競合状態が原因の外部キー制約エラーに関する修正がいくつか追加されました。b/114705286
ConstraintTrackingWorker.onStopped(boolean)の呼び出しが、基になるWorkerにデリゲートされました。b/114125093- Firebase JobDispatcher に対する適切な最小バックオフ遅延が適用されました。b/113304626
- ライブラリ内部のスレッドの保証が改善されました。
- 内部での
LiveDataの重複排除に関する潜在的な問題を修正しました。
API の変更
WorkerFactoryをWorkManager.Configurationの一部として指定することにより、実行時に独自のWorkerインスタンスを作成できるようになりました。代替ファクトリはDefaultWorkerFactoryです。これは、WorkManager の旧バージョンの動作と一致します。WorkerとNonBlockingWorkerのデフォルト コンストラクタを非推奨にしました。新しいコンストラクタ(Worker(Context, WorkerParameters))を使用し、super(Context, WorkerParameters)を呼び出してください。WorkManager の将来のバージョンでデフォルト コンストラクタが削除される予定です。
- Google 社内で新しい
ListenableFutureアーティファクトの使用が開始されました(Guava 依存関係はなし)。今後のリリースで、ListenableFutures が API に導入される予定です。この変更により、NonBlockingWorkerが最終的に再表示されます。 TestDriver.setInitialDelayMet(UUID)とTestDriver.setPeriodDelayMet(UUID)を使用してTestDriverの時限タスクをトリガーする機能が追加されました。b/113360060
互換性を破る変更
WorkerとNonBlockingWorkerのデフォルト コンストラクタを非推奨にしました。できるだけ早く新しいコンストラクタに移行してください。将来のバージョンでデフォルト コンストラクタが削除される予定です。
バージョン 1.0.0-alpha08
2018 年 8 月 27 日
バグの修正
- WorkManager コンポーネントがダイレクト ブート非対応として明示的にラベル付けされました。そのため、ダイレクト ブート中は、WorkManager コンポーネントは起動しません。将来、ダイレクト ブートに対応したバージョンの WorkManager が提供される予定です。b/112665532
- 再試行されたタスクが実行されなくなる問題を修正しました。b/112604021
- たびたび定期タスクが実行されなくなる問題を修正しました(上の問題に関連)。b/112859683
- アプリプロセスがすでに実行されている場合、バックオフ ポリシーが優先されるようになりました。
- 制限が 10 KB であることを示すように、
Dataの例外メッセージを修正しました。 JobSchedulerプロセスの完了の遅延に対処するために、Configuration.setMaxSchedulerLimit(int)の最大値を 50 に下げました。b/112817355
バージョン 1.0.0-alpha07
2018 年 8 月 16 日
バグの修正
- 負の制限値が指定された SQL クエリが結果を際限なく返す可能性がある問題を修正しました。
- 作業の実行が終了したときに、他のスケジューラに含まれているその作業の保留中のすべてのコピーが正しくキャンセルされるようになりました。この問題は、
JobSchedulerのジョブ数の制限超過の原因となっていました。b/111569265 ConstraintTrackerのConcurrentModificationExceptionを修正しました。b/112272753Data.getBooleanArray(String)とData.getIntArray(String)の戻り値の型のアノテーションを、@NonNullではなく@Nullableに変更しました。b/112275229
API の変更
Workerが新しいクラスNonBlockingWorkerを拡張できるようになりました。この変更による現在の処理への影響はありません。NonBlockingWorkerは将来、カスタムのスレッド ソリューションに完全に対応したエンティティになる予定です。Data.getBooleanArray(String)とData.getIntArray(String)の戻り値の型のアノテーションを、@NonNullではなく@Nullableに変更しました。b/112275229- Kotlin 拡張機能:
Map.toWorkData()を非推奨にし、トップレベルのworkDataOf(vararg Pair<String, Any?>)を追加することにより、既存の API との整合性を強化しました。
バージョン 1.0.0-alpha06
2018 年 8 月 1 日
バグの修正
- 作業のスケジュール設定時のデータベース ロックを防止できるようになりました。b/111801342
- Doze モード時に
PeriodicWorkがスケジュールどおりに実行されないバグを修正しました。b/111469837 WorkManagerのクラッシュを引き起こす、制約を追跡する際の競合状態を修正しました。googlecodelabs/android-workmanager/issues/56WorkRequest.Builder#build()を使用する場合に一意のWorkRequestを作成できるようになりました。b/111408337RescheduleReceiverは、それを必要とするWorkRequestが存在する場合にのみ使用できるようになりました。b/111765853
バージョン 1.0.0-alpha05
2018 年 7 月 24 日
API の変更
WorkManager.getInstance()のアノテーションに、@Nullableではなく@NonNullが使用されるようになりました。その代わり、手動で初期化する場合にシングルトンが適切に初期化されないと、このメソッドはIllegalStateExceptionをスローします。これは API の互換性を破る変更です。- 新しい API である
Configuration.Builder.setMinimumLoggingLevel(int)が追加されました。この API では、WorkManager の詳細度を制御できます。デフォルトでは、WorkManager はLog.INFO以上をログに記録します。 Data.getString()のシグネチャが変更され、デフォルト値を取得しなくなりました(暗黙的にnull)。これは API の互換性を破る変更です。- 内部用にのみ必要な一部のメソッドが
@hideとしてマークされました。これには、Constraintsコンストラクタ、Data.toByteArray()、Data.fromByteArray(byte[])が含まれます。これは API の互換性を破る変更です。
バグの修正
- WorkManager は自動バックアップの既知のケースの際に作業を実行しなくなりました。この問題がクラッシュを引き起こしていた可能性があります。b/110564377
JobSchedulerを使用する場合のPeriodicWorkRequestのスケジュールの重複を修正しました。b/110798652- デバイスの Doze の後に
PeriodicWorkRequestが正しく実行されない問題を修正しました。b/111469837 - Firebase JobDispatcher の使用時に初期遅延が発生する問題を修正しました。b/111141023
- 潜在的な競合状態とタイミングに関するいくつかの問題を修正しました。
- 不要になった
BroadcastReceiverが適切に解放されるようになりました。 - アプリを強制終了した後に再起動する場合のスケジュール変更のパフォーマンスを最適化しました。
- 特定の
WorkRequestをキューに登録する前後にTestScheduler.setAllConstraintsMet(UUID)を呼び出せるようになりました。b/111238024
互換性を破る変更
WorkManager.getInstance()のアノテーションに、@Nullableではなく@NonNullが使用されるようになりました。Data.getString()のシグネチャが変更され、デフォルト値を取得しなくなりました(暗黙的にnull)。- 内部用にのみ必要な一部のメソッドが
@hideとしてマークされました。これには、Constraintsコンストラクタ、Data.toByteArray()、Data.fromByteArray(byte[])が含まれます。
バージョン 1.0.0-alpha04
2018 年 6 月 26 日
バグの修正
AlarmManagerベースの実装を使用する場合、PeriodicWorkRequestのスケジュールが正しく変更されるようになりました。- 強制停止または再起動の後ですべてのワーカーのスケジュールを変更した場合に ANR が発生する可能性がある問題を修正しました。b/110507716
- null 可能性のアノテーションが各種の WorkManager API に追加されました。b/110344065
- Worker の実行時に発生する捕捉されない例外がログに記録されるようになりました。b/109900862
- 旧バージョンの WorkManager にロールバックする場合の破壊的なデータベース移行が可能になりました。b/74633270
- 重複する暗黙的なタグを作成した場合に移行がクラッシュする問題を修正しました。これは、同じ暗黙的なタグ形式を自分で使用した場合にのみ発生する、非常に珍しい問題です。
バージョン 1.0.0-alpha03
2018 年 6 月 19 日
バグの修正
AlarmManagerベースの実装における競合状態を修正しました。b/80346526デバイスの再起動後に
JobSchedulerを使用した場合にジョブが重複する問題を修正しました。コンテンツの URI トリガーを含むジョブが再起動後にも保持されるようになりました。b/80234744
ドキュメントが更新されました。b/109827628、b/109758949、b/80230748
WorkRequestをキューに再登録するとクラッシュする問題を修正しました。b/109572353work-runtime-ktxの依存関係を利用する場合に Kotlin コンパイラで警告が出力される問題を修正しました。WorkManager で
Roomバージョン1.1.1-rc1が使用されるようになりました。
API の変更
WorkContinuation.getStatuses()の同期バージョンであるgetStatusesSync()を追加しました。- ユーザーが開始したキャンセルと OS がリクエストした一時的な停止を区別する機能が
Workerに追加されました。Worker.isStopped()は、どのような種類の停止がリクエストされた場合でもtrueを返します。Worker.isCancelled()は、処理が明示的にキャンセルされた場合にtrueを返します。b/79632247 - API 28 での JobParameters#getNetwork() のサポートが追加されました。これは
Worker.getNetwork()を介して公開されます。 Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)が追加されました。これにより、JobSchedulerまたはAlarmManagerに送信可能なジョブの数を適用できるようになります。これは、使用可能なJobSchedulerスロットをWorkManagerがすべて取得するのを防ぐのに役立ちます。Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)が追加されました。これは、WorkManagerが安全に使用できるJobSchedulerジョブ ID の範囲を定義するのに役立ちます。b/79996760Worker.getRunAttemptCount()が特定のWorkerの現在の実行数を返すようになりました。b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)を使用することで、一意のPeriodicWorkRequestをキューに登録できるようになりました。b/79600647WorkManager.cancelAllWork()がすべてのWorkerをキャンセルするようになりました。WorkManagerに依存するライブラリは、このメソッドがWorkManager.getLastCancelAllTimeMillis()を使用して前回呼び出されたタイミングを照会することで、内部状態をさらにクリーンアップすることができます。- 完了したジョブを内部データベースから削除するための
WorkManager.pruneWork()が追加されました。b/79950952、b/109710758
動作の変更
- すべての
WorkRequestで使用できる暗黙的なタグが追加されました。このタグはWorkerの完全修飾クラス名です。これにより、tagなしで、またはidを使用できない場合でも、WorkRequestを削除できます。b/109572351
互換性を破る変更
Worker.WorkerResultの名前をWorker.Resultに変更しました。Worker.onStoppedにisCancelledパラメータが追加されました。このパラメータは、Workerが明示的にキャンセルされた場合にtrueに設定されます。
バージョン 1.0.0-alpha02
2018 年 5 月 24 日
バグの修正
State.isFinished()のNullPointerExceptionを修正しました。b/79550068Application.onCreate()でWorkerのスケジュール変更を引き起こしていた問題を修正しました。b/79660657- OS で許可されるよりも多くの処理のスケジュールを設定できる問題を修正しました。b/79497378
Workerに関連付けられている wake lock のクリーンアップをバックグラウンド スレッドに移動しました。AlarmManagerの実装で、保留中のすべての処理が完了したときに適切にクリーンアップされるようになりました。- 英語地域以外に影響を及ぼしていたクリーンアップの SQL クエリを修正しました。b/80065360
Dataのfloatに対するサポートが追加されました。b/79443878Data.Builder.putAll()がBuilderのインスタンスを返すようになりました。b/79699162- ドキュメントに Javadoc に関する記述を増やし、修正を行いました。b/79691663
API の変更
Workerが停止されている状態に対応できるようになりました。Worker.isStopped()を使用すると、Workerが停止されているかどうかを確認できます。また、Worker.onStopped()を使用すると、軽量のクリーンアップ処理を実行できます。Worker.getTags()API が、Workerに関連付けられているタグのSetを返すようになりました。javax.time.Durationのオーバーロードが、期間とTimeUnitの組み合わせを取得する API 用に追加されました。これは@RequiresApi(26)によって保護されます。WorkManager拡張機能がandroidx.work.ktxパッケージからandroidx.workパッケージに移動されました。以前の拡張機能を非推奨にし、将来のバージョンで削除される予定です。Configuration.withExecutor()を非推奨にしました。代わりにConfiguration.setExecutor()を使用してください
バージョン 1.0.0-alpha01
2018 年 5 月 8 日
WorkManager は、制約に対応した保証済みのバックグラウンド作業のスケジュール設定と実行を簡素化します。この初回リリースは 1.0.0-alpha01 です。