ライフサイクル
androidx.lifecycle グループ内のすべてのアーティファクトのリストを以下に示します。
| アーティファクト | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
|---|---|---|---|---|
| lifecycle-* | 2.9.4 | - | 2.10.0-beta01 | - |
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - |
依存関係の宣言
Lifecycle への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 2.10
バージョン 2.10.0-beta01
2025 年 10 月 22 日
androidx.lifecycle:lifecycle-*:2.10.0-beta01 がリリースされました。バージョン 2.10.0-beta01 には、これらの commit が含まれています。
API の変更
ViewModelStoreNavEntryDecoratorDefaultの名前がViewModelStoreNavEntryDecoratorDefaultsに変更されました。(I6d27b、b/444447434)
バグの修正
- オーナーが
Lifeycle.State.CREATEDに移動する前にLifecycle.Event.ON_DESTROYイベントを受信した場合、rememberLifecycleOwnerがクラッシュしなくなりました。(I6f98e、b/444594991)
バージョン 2.10.0-alpha05
2025 年 10 月 8 日
androidx.lifecycle:lifecycle-*:2.10.0-alpha05 がリリースされました。バージョン 2.10.0-alpha05 にはこれらの commit が含まれています。
API の変更
removeViewModelStoreOnPopCallback()はViewModelStoreNavEntryDecoratorDefaultオブジェクトの一部になりました。他のプラットフォームや実装は、ここでデフォルトを呼び出すことができます。(Ia1f23、b/444447434)ViewModelStoreNavEntryDecoratorを関数からクラスにリファクタリングして、NavEntryDecoratorのファクトリとしての機能をより適切に反映させました。また、デコレータのshouldRemoveViewModelStoreパラメータの名前をremoveViewModelStoreOnPopに変更して、このコールバックがbackStackからエントリがポップされた場合にのみ呼び出されることを明確にしました。(Iefdc5、b/444447434)
バージョン 2.10.0-alpha04
2025 年 9 月 24 日
androidx.lifecycle:lifecycle-*:2.10.0-alpha04 がリリースされました。バージョン 2.10.0-alpha04 には、これらの commit が含まれています。
API の変更
LifecycleOwnerコンポーザブルをrememberLifecycleOwnerにリファクタリングします。この関数はLifecycleOwnerを直接返すようになりました。このオーナーをサブ コンポジションに提供するには、CompositionLocalProviderを使用します。(Ic57f0、b/444446629)- lifecycle-viewmodel-navigation3 に KMP スタブを追加して、JetBrains がこれらのターゲットを埋めるフォークを提供し、CMP をサポートできるようにします。(I44a4c)
バージョン 2.10.0-alpha03
2025 年 8 月 27 日
androidx.lifecycle:lifecycle-*:2.10.0-alpha03 がリリースされました。バージョン 2.10.0-alpha03 にはこれらの commit が含まれています。
API の変更
- Compose を 1.9.0 に更新します。(I2b9de)
バージョン 2.10.0-alpha02
2025 年 8 月 13 日
androidx.lifecycle:lifecycle-*:2.10.0-alpha02 がリリースされました。バージョン 2.10.0-alpha02 にはこれらの commit が含まれています。
新機能
LifecycleOwnerコンポーザブルでスタンドアロンのルート ライフサイクルを作成できるようになりました。parent = nullを(明示的に)設定すると、新しいライフサイクルはホスト(Activity、Fragment、NavBackStackEntryなど)から独立して動作します。コンポーザブルがコンポジションに入るとすぐに開始し、コンポジションから出ると自動的に破棄されます。(I8dfbe、b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
API の変更
LifecycleOwnerコンポーザブルで、parentLifecycleOwnerパラメータの名前がparentに変更されました。(I080bc)
バグの修正
LifecycleOwnerコンポーザブルが、破棄時にライフサイクルをDESTROYEDに正しく移動するようになりました。これにより、ライフサイクルへの参照を保持する外部コードで発生する可能性のあるリークを防ぐことができます。(I9e5b7、b/433659048)- デフォルトの minSdk を API 21 から API 23 に移行(Ibdfca、b/380448311、b/435705964、b/435705223)
外部からの協力
LifecycleOwnerから不要な内部バッキング フィールドを削除しました。Jake Wharton 氏のご協力に感謝いたします。(Ideddb)
バージョン 2.10.0-alpha01
2025 年 7 月 30 日
androidx.lifecycle:lifecycle-*:2.10.0-alpha01 がリリースされました。バージョン 2.10.0-alpha01 には、これらの commit が含まれています。
新機能
LifecycleOwnerコンポーザブルを追加して、UI 内で直接スコープ付きライフサイクルを作成できるようにします。これは、独自のライフサイクルを個別に管理する必要があるコンポーネントに便利です。Navigation3 がこの新しいコンポーザブルを統合する方法の例については、aosp/3708610 をご覧ください。(76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
API の変更
CreationExtrasのビルダー ファクトリ関数を追加し、より便利で慣用的な Kotlin API を提供します。(Iab2bd)SavedStateHandle.savedで null 許容型をネイティブにサポートし、null 許容プロパティの保存と復元を簡素化しました。(I54d69、b/421325690)SavedStateHandleコンストラクタを@VisibleForTestingとしてマークします。(Iff0e0、b/408002794)
バージョン 2.9
バージョン 2.9.4
2025 年 9 月 17 日
androidx.lifecycle:lifecycle-*:2.9.4 がリリースされました。バージョン 2.9.4 にはこれらの commit が含まれています。
バグの修正
- Compose コンパイラ プラグインが適用されず、Lifecycle KMP アーティファクトが破損するエラーを修正しました。(Ie95bc、b/443096483、b/443965665)
バージョン 2.9.3
2025 年 8 月 27 日
androidx.lifecycle:lifecycle-*:2.9.3 がリリースされました。バージョン 2.9.3 にはこれらの commit が含まれています。
新機能
- Lifecycle
*-composeアーティファクトに新しい Kotlin マルチプラットフォーム(KMP)ターゲットを追加しました。Lifecycle は、JVM(Android とデスクトップ)、ネイティブ(Linux、iOS、watchOS、macOS、MinGW)、ウェブ(JavaScript、WasmJS)の各プラットフォームをサポートするようになりました。(I0a0e4)
バグの修正
androidx.annotationを 1.9.1 に更新(Ic9e4f、b/397701294)
バージョン 2.9.2
2025 年 7 月 16 日
androidx.lifecycle:lifecycle-*:2.9.2 がリリースされました。バージョン 2.9.2 にはこれらの commit が含まれています。
バグの修正
- Lifecycle アーティファクトに新しい Kotlin Multiplatform(KMP)ターゲットを追加しました。Lifecycle は、JVM(Android とデスクトップ)、ネイティブ(Linux、iOS、watchOS、macOS、MinGW)、ウェブ(JavaScript、WasmJS)の各プラットフォームをサポートするようになりました。Compose 1.9 の安定版リリースに依存するため、
*-composeアーティファクトに新しい KMP ターゲットは追加されていません。(I01cb8)。
依存関係の更新
- Lifecycle が Annotation
1.9.1に依存し、新しい KMP ターゲット(Ic9e4f、b/397701294)のサポートが有効になりました。
バージョン 2.9.1
2025 年 6 月 4 日
androidx.lifecycle:lifecycle-*:2.9.1 がリリースされました。バージョン 2.9.1 にはこれらの commit が含まれています。
バグの修正
SavedStateHandle.remove(key)がSavedStateHandle.getMutableStateFlow(key)状態をクリアしない問題を修正しました。(d5f939、b/418746333)
バージョン 2.9.0
2025 年 5 月 7 日
androidx.lifecycle:lifecycle-*:2.9.0 がリリースされました。バージョン 2.9.0 にはこれらの commit が含まれています。
2.8.0 以降の重要な変更
- 新しい
androidx.lifecycle:lifecycle-viewmodel-testingKMP アーティファクトが利用可能になりました。このアーティファクトは、ViewModelsを単独でテストするためのViewModelScenarioクラスを提供します。また、onClearedとSavedStateHandleのサポートに加えて、recreate()を介したテスト プロセスの終了と再作成もサポートします。 MutableStateFlowを返すためにSavedStateHandleにgetMutableStateFlowを追加します。この新しい関数はキー専用であり、getLiveDataとともに使用することはできません。両方を使用して同じ状態にアクセスしようとすると、例外がスローされます。CreationExtrasには、Kotlin でコンテンツをわかりやすく操作するためのマップのような演算子オーバーロードが含まれるようになりました。CreationExtrasでin、+=、+を使用できます。
KotlinX シリアル化のサポート
SavedState
1.3.0に KotlinX シリアル化のサポートが追加されたため、saved(遅延プロパティ デリゲート)を導入しました。これにより、@SerializableクラスをSavedStateHandleに簡単に保存し、プロセスが終了して再作成されたときに、これらのクラスを自動的に復元できます。savedデリゲートは遅延評価されるため、アクセスされるまでinitラムダを呼び出したり、SavedStateHandleに何も保存したりしないことに注意してください。@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin マルチプラットフォーム
lifecycle-testingモジュールが KMP に対応し、TestLifecycleOwnerなどの API が含まれるようになりました。lifecycle-viewmodel-savedstateモジュールが KMP に対応し、SavedStateHandleなどの API が含まれるようになりました。androidx.compose.ui.platform.LocalLifecycleOwnerが共通ソースセットで利用できるようになりました。NewInstanceFactoryが JVM デスクトップと Android ターゲットで利用できるようになりました。
動作の変更
Lifecycle.DESTROYED状態は終了状態です。Lifecycleをこの状態から他の状態に移行しようとすると、IllegalStateExceptionが返されるようになります。- 返された
Bundleが空の場合、SavedStateHandleにSavedStateProvider.saveState()が含まれなくなりました。
バージョン 2.9.0-rc01
2025 年 4 月 23 日
androidx.lifecycle:lifecycle-*:2.9.0-rc01 がリリースされました。バージョン 2.9.0-rc01 には、これらの commit が含まれています。
Lint API の互換性に関する警告
- JetBrains が
KaCallableMemberCallをクラスからインターフェースに変更したため、バイナリ互換性が損なわれています。プロジェクトの AGP バージョンが lint チェックのコンパイルに使用されたバージョンと異なる場合、クラッシュが発生する可能性があります。この更新は aosp/3577172 で行われましたが、リリースノートに記載されていなかったため、ここで明確にします。推奨される修正: 最新の安定版 AGP に更新します。完全に更新できない場合は、android.experimental.lint.versionを使用して、AGP バージョンに合わせて lint チェックを調整します。詳しくは、Compose ランタイムの動作の変更をご覧ください。
バージョン 2.9.0-beta01
2025 年 4 月 9 日
androidx.lifecycle:lifecycle-*:2.9.0-beta01 がリリースされました。バージョン 2.9.0-beta01 にはこれらの commit が含まれています。
API の変更
Lifecycle ViewModel Composeは、Compose ランタイム 1.7.1 以降と同じ Kotlin Multiplatform 設定を使用するようになりました。-desktopアーティファクトが削除され、-jvmStubsと-linuxx64Stubsのアーティファクトが追加されました。これらのターゲットは使用を想定したものではなく、Jetbrains Compose の取り組みを支援するためのプレースホルダです。(I5cb14、b/406592090)
依存関係の更新
- このライブラリは Kotlin 2.0 言語レベルをターゲットとするようになり、KGP 2.0.0 以降が必要になりました。(Idb6b5)
Lifecycle ViewModel Composeが Compose 1.7.8 に依存するようになりました。(I5cb14、b/406592090)
バージョン 2.9.0-alpha13
2025 年 3 月 26 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha13 がリリースされました。一般公開されている主な変更点はありません。バージョン 2.9.0-alpha13 には、これらの commit が含まれています。
バージョン 2.9.0-alpha12
2025 年 3 月 12 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha12 がリリースされました。バージョン 2.9.0-alpha12 にはこれらの commit が含まれています。
API の変更
- サポートされているすべての KMP プラットフォームの
ViewModelProvider.getに@MainThreadアノテーションを追加します。(I7e8dd、b/397736115) SavedState*DelegatesをSavedState*Delegateに変更しました。(I8589b、b/399629301)
バージョン 2.9.0-alpha11
2025 年 2 月 26 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha11 がリリースされました。バージョン 2.9.0-alpha11 にはこれらの commit が含まれています。
API の変更
saved()デリゲートにSavedStateConfigパラメータを追加(I39b3a)
バージョン 2.9.0-alpha10
2025 年 2 月 12 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha10 がリリースされました。バージョン 2.9.0-alpha10 にはこれらの commit が含まれています。
API の変更
MutableStateSerializerをlifecycle-viewmodel-composeからsavedstate-composeに移動しました。(I4f690、b/378895074)
外部からの協力
- コンポジションで
Lifecycle::currentStateを呼び出すための新しい Lint の問題を新たに追加しました。代わりにcurrentStateAsalue().valueを使用して、ライフサイクル状態の変更が正しく再コンポーズを引き起こすようにすることを推奨します。Steven Schoen さん、ありがとうございました。(Iad484)
バージョン 2.9.0-alpha09
2025 年 1 月 29 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha09 がリリースされました。バージョン 2.9.0-alpha09 には、これらの commit が含まれています。
新機能
androidx.compose.runtime.MutableStateをシリアル化するためのMutableStateSerializerを追加します。(Idfc48、b/378895074)
API の変更
- オーバーロードされた
SavedStateHandle.saved()デリゲート関数をデフォルト パラメータに置き換え(Icd1c1) AbstractSavedStateViewModelFactoryは、すべてのViewModelに対してSavedStateHandleを作成し、不要なオーバーヘッドが発生するため、非推奨になりました。ViewModelをより効率的に作成するには、代わりにCreationExtras.createSavedStateHandleでViewModelProvider.Factoryを使用します。(Ia920b、b/388590327)
バージョン 2.9.0-alpha08
2024 年 12 月 11 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha08 がリリースされました。バージョン 2.9.0-alpha08 にはこれらの commit が含まれています。
新機能
ViewModelScenario.recreateを追加して、テスト対象のViewModelと関連するすべてのコンポーネントを再作成するシステム プロセスの終了をシミュレートします。(Id6a69、b/381063087)- それぞれの
findViewTreeAPI を介して取得されたLifecycleOwnerインスタンスとViewModelStoreOwnerインスタンスは、ViewOverlayなどのビューの分離された親を介して解決できるようになりました。分離ビューの親について詳しくは、core のリリースノートまたはViewTree.setViewTreeDisjointParentのドキュメントをご覧ください。(I800f4)
API の変更
- 名前付けとパッケージ構成を
SavedStateRegistryOwnerDelegateとより一貫性のあるものにしました(I8c135、b/376026744)
バグの修正
- このライブラリは、型使用である JSpecify nullness アノテーションを使用するようになりました。Kotlin を使用している場合、次のコンパイラ引数を使用して正しい使用法を適用する必要があります。
-Xjspecify-annotations=strict(Kotlin コンパイラのバージョン 2.1.0 以降ではデフォルトです)。(Ie4340、b/326456246) ViewModel.onClearedクリア シーケンスを文書化します。(I586c7、b/363984116)
バージョン 2.9.0-alpha07
2024 年 11 月 13 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha07 がリリースされました。バージョン 2.9.0-alpha07 にはこれらの commit が含まれています。
Kotlin マルチプラットフォームの互換性
- Lifecycle
ViewModel SavedStateが KMP に対応しました。これにより、共通コードでSavedStateHandleを使用できます。(Ib6394、b/334076622)
KotlinX シリアル化のサポート
SavedState
1.3.0-alpha05に KotlinX シリアル化のサポートが追加されたため、saved(遅延プロパティ デリゲート)を導入しました。これにより、@SerializableクラスをSavedStateHandleに簡単に保存し、プロセスが終了して再作成されたときに、それらのクラスを自動的に復元できます。savedデリゲートは遅延評価されるため、アクセスされるまでinitラムダを呼び出したり、SavedStateHandleに何も保存したりしないことに注意してください。(I47a88、b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
API の変更
MutableStateFlowを返すためにSavedStateHandleにgetMutableStateFlowを追加します。この新しい関数はキー専用であり、getLiveDataとともに使用することはできません。両方を使用して同じ状態にアクセスしようとすると、例外がスローされます。(I04a4f、b/375408415)
バージョン 2.9.0-alpha06
2024 年 10 月 30 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha06 がリリースされました。バージョン 2.9.0-alpha06 には、これらの commit が含まれています。
動作の変更
Lifecycle.DESTROYED状態は終了状態です。Lifecycleをこの状態から他の状態に移行しようとすると、IllegalStateExceptionが返されるようになりました。(I116c4、b/370577987)- 返された
Bundleが空の場合、SavedStateHandleにSavedStateProvider.saveState()が含まれなくなりました。(I910b5、b/370577987)
バグの修正
LifecycleがDESTROYEDの場合、Lifecycle.eventFlowが正しく完了するようになりました(I293b2、b/374043130)
バージョン 2.9.0-alpha05
2024 年 10 月 16 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha05 がリリースされました。重要な変更はありません。バージョン 2.9.0-alpha05 には、これらの commit が含まれています。
バージョン 2.9.0-alpha04
2024 年 10 月 2 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha04 がリリースされました。バージョン 2.9.0-alpha04 には、これらの commit が含まれています。
Kotlin マルチプラットフォーム
lifecycle-viewmodel-savedstateモジュールは、今後のリリースでSavedStateHandleなどの API が共通ソースセットで利用可能になることに備えて、KMP 互換になるように構成されています。(I503ed、I48764、b/334076622)
バージョン 2.9.0-alpha03
2024 年 9 月 18 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha03 がリリースされました。バージョン 2.9.0-alpha03 にはこれらの commit が含まれています。
バグの修正
- Lifecycle
2.8.6以降:NullSafeMutableLiveDataLint エラーでスマートキャストのサポートが改善され、誤検出が回避されるようになりました。(85fed6、b/181042665)
依存関係の更新
- Lifecycle
2.8.6以降: Lifecycle Runtime Compose が Compose Runtime1.7.1に依存するようになりました - Lifecycle Runtime が ProfileInstaller
1.4.0に依存するようになりました
バージョン 2.9.0-alpha02
2024 年 9 月 4 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha02 がリリースされました。バージョン 2.9.0-alpha02 には、これらの commit が含まれています。
バグの修正
- Lifecycle
2.8.5以降: 難読化を許可するようにandroidx.lifecycle.ReportFragmentProGuard ルールを更新しました。(ff898e1)
外部からの協力
androidx.compose.ui.platform.LocalLifecycleOwnerを共通ソースセット(KMP)に移動します。JetBrains の Ivan Matkov 氏に感謝いたします。(8cd5d03)- Lifecycle
2.8.5から: SavedStateHandle.saveable` 拡張機能デリゲートが null 許容値をサポートするようになりました。Roman Kalukiewicz さん、ご協力ありがとうございました。(0d78ea6)
バージョン 2.9.0-alpha01
2024 年 8 月 7 日
androidx.lifecycle:lifecycle-*:2.9.0-alpha01 がリリースされました。バージョン 2.9.0-alpha01 には、これらの commit が含まれています。
Kotlin マルチプラットフォーム
lifecycle-testingが KMP に対応しました。(Iea41e)linuxArm64Kotlin マルチプラットフォーム ターゲットのサポートを追加しました(I139d3、b/338268719)
新機能
- 新しい
androidx.lifecycle:lifecycle-viewmodel-testingKMP アーティファクトが利用可能になりました。このアーティファクトは、onCleared(すべてのプラットフォーム)とSavedStateHandle(Android のみ)をサポートし、ViewModel を単独でテストするためのViewModelScenarioクラスを提供します。(337f68d、c9b3409、9799a95c、b/264602919) ViewModelProviderを使用したViewModelの作成がスレッドセーフになりました。@MainThreadアノテーションが削除されました。(Ifd978、b/237006831)
API の変更
- 匿名の
CreationExtras.Keyオブジェクトの作成を簡素化するために、CreationExtras.Key()ファクトリ関数を追加しました。(I970ee) CreationExtrasには、Kotlin でコンテンツをわかりやすく操作するためのマップのような演算子オーバーロードが含まれるようになりました。CreationExtrasでin、+=、+を使用できます。(Ib4353)CreationExtrasにequals、hashCode、toStringメソッドが実装されました。(Ib4353)NewInstanceFactoryが JVM デスクトップと Android ターゲットで利用できるようになりました。(d3d0892)- Kotlin 言語バージョン 2.0 で基盤となる Application を安全に公開するためのインライン拡張プロパティ(I39df2)
バグの修正
- AGP 7.3 以降(R8 バージョン 3.3 など)で R8 を使用する場合、および AGP 8.1 以降(D8 バージョン 8.1 など)ですべてのビルドで、API モデリングを介して自動的に行われるため、新しいプラットフォーム API へのアクセスの手動でのアウトライン設定を削除しました。AGP を使用していないクライアントは、D8 バージョン 8.1 以降に更新することをおすすめします。詳しくは、こちらの記事をご覧ください。(If6b4c、b/345472586)
バージョン 2.8
バージョン 2.8.7
2024 年 10 月 30 日
androidx.lifecycle:lifecycle-*:2.8.7 がリリースされました。バージョン 2.8.7 にはこれらの commit が含まれています。
API の変更
androidx.compose.ui.platform.LocalLifecycleOwnerが共通ソースセット(KMP)で利用できるようになりました。(6a3f5b3)lifecycle-runtime-compose:desktopアーティファクトが削除され、-jvmStubsアーティファクトと-linuxx64Stubsアーティファクトが追加されました。これらのターゲットは使用を想定したものではなく、Jetbrains Compose の取り組みを支援するためのプレースホルダです。(6a3f5b3)
バージョン 2.8.6
2024 年 9 月 18 日
androidx.lifecycle:lifecycle-*:2.8.6 がリリースされました。バージョン 2.8.6 にはこれらの commit が含まれています。
バグの修正
NullSafeMutableLiveDataLint エラーでスマートキャストのサポートが改善され、誤検出が回避されるようになりました。(85fed6、b/181042665)
依存関係の更新
- Lifecycle Runtime Compose が Compose Runtime
1.7.1に依存するようになりました
バージョン 2.8.5
2024 年 9 月 4 日
androidx.lifecycle:lifecycle-*:2.8.5 がリリースされました。バージョン 2.8.5 にはこれらの commit が含まれています。
バグの修正
- 難読化を許可するように
androidx.lifecycle.ReportFragmentProGuard ルールを更新します。(ff898e1)
外部からの協力
SavedStateHandle.saveable拡張機能デリゲートで null 許容値がサポートされるようになりました。Roman Kalukiewicz さん、ご協力ありがとうございました。(0d78ea6)
バージョン 2.8.4
2024 年 7 月 24 日
androidx.lifecycle:lifecycle-*:2.8.4 がリリースされました。バージョン 2.8.4 にはこれらの commit が含まれています。
バグの修正
LiveData.asFlow()は、LiveDataにすでに設定されている値を受け取った直後に返された Flow が完了するケース(take(1)を使用する場合など)を正しく処理するようになりました。(I9c566)Lifecycle*Effectの完了がべき等になりました(つまり、Lifecycle の停止が原因でonStopOrDisposeが呼び出された場合、Lifecycle が再びSTARTEDに戻らない限り、破棄時に 2 回目は呼び出されません)。(I5f607、b/352364595)
バージョン 2.8.3
2024 年 7 月 1 日
androidx.lifecycle:lifecycle-*:2.8.3 がリリースされました。バージョン 2.8.3 にはこれらの commit が含まれています。
バグの修正
- コードの縮小を使用している場合に、Lifecycle 2.8 の Compose 1.6.0 以前との下位互換性に関する問題を修正しました。(aosp/3133056、b/346808608)
バージョン 2.8.2
2024 年 6 月 12 日
androidx.lifecycle:lifecycle-*:2.8.2 がリリースされました。バージョン 2.8.2 にはこれらの commit が含まれています。
バグの修正
- Compose 1.6.X 以前で Lifecycle 2.8.X を使用したときに発生する
CompositionLocal LocalLifecycleOwner not presentエラーを修正しました。これで、回避策なしで、Compose の任意のバージョンで Lifecycle 2.8.2 を使用できるようになりました。(aosp/3105647、b/336842920) compileOnlyLifecycle 依存関係の以前のバージョンとバージョン 2.8 以降を混在させたときにViewModelProviderがクラッシュしなくなり、LeakCanary などのライブラリに関する問題が修正されました。(I80383、b/341792251)
バージョン 2.8.1
2024 年 5 月 29 日
androidx.lifecycle:lifecycle-*:2.8.1 がリリースされました。バージョン 2.8.1 にはこれらの commit が含まれています。
バグの修正
lifecycle-viewmodel-composeはcompose-runtimeへの共通依存関係のみを持ち、compose-uiへの共通依存関係はなくなりました。Android アーティファクトは、互換性のためにcompose-uiを保持します。(aosp/3079334、b/339562627)- プロパティ委任を使用した
ViewModelのsaveable統合で、自動生成されたキーの一部としてクラス名が使用されるようになりました。これにより、複数のクラスで同じSavedStateHandleが使用されている場合でも競合が回避されます。(aosp/3063463)
バージョン 2.8.0
2024 年 5 月 14 日
androidx.lifecycle:lifecycle-*:2.8.0 がリリースされました。バージョン 2.8.0 にはこれらの commit が含まれています。
2.7.0 以降の重要な変更
- Compose ベースのヘルパー API を Compose UI の外部で使用できるように、
LocalLifecycleOwnerが Compose UI からlifecycle-runtime-composeに移動されました。 lifecycle-runtime-composeアーティファクトにdropUnlessResumedAPI とdropUnlessStartedAPI が含まれるようになりました。これにより、LifecycleOwnerが指定されたLifecycle.Stateを下回った後でも、クリックなどのイベントをドロップできます。たとえば、Navigation Compose でこれを使用すると、別の画面への切り替えがすでに開始された後にクリック イベントを処理することを回避できます。onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }ViewModel.viewModelScopeがオーバーライド可能なコンストラクタ パラメータになり、独自のディスパッチャとSupervisorJob()を挿入したり、runTest内で使用可能なbackgroundScopeを使用してデフォルトをオーバーライドしたりできるようになりました。(I2817c、b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }ViewModelが Kotlin で書き換えられ、Closeableの代わりにAutoClosableを使用するようになりました。getCloseable()を介して取得できるkeyを使用したAutoCloseableオブジェクトの追加がサポートされるようになりました。キーなしで
LifecycleStartEffectとLifecycleResumeEffectを呼び出すと、これらの API がミラーリングするDisposableEffectAPI と同じ規則に従って、エラーが返されるようになりました。LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)のサポートが終了し、LiveData.toPublisher(lifecycleOwner)に置き換えられました。lifecycle-livedata-core-ktxKotlin 拡張機能がlifecycle-livedata-coreモジュールに移動されました。NullSafeMutableLiveDataは、多くの誤検出を回避するためにリファクタリングされました。
Lifecycle Kotlin マルチプラットフォームの互換性
Lifecycle、LifecycleOwner、LifecycleObserver、Lifecycle.State、Lifecycle.Event、LifecycleRegistry のコア Lifecycle API が、Kotlin マルチプラットフォームと互換性のあるアーティファクトで提供されるようになりました。
影響を受けるアーティファクト:
lifecycle-commonでは、ほとんどの API がcommonに移動され、Android に加えて jvm と iOS がサポートされます。lifecycle-runtimeでは、ほとんどの API がcommonに移動され、Android に加えて jvm と iOS がサポートされます。lifecycle-runtime-ktxが空になり、すべての API がlifecycle-runtimeに移動しました。lifecycle-runtime-composeはすべての API をcommonに移動し、androidx.composeのマルチプラットフォーム サポートに一致する Android アーティファクトをリリースします。
ViewModel Kotlin マルチプラットフォームの互換性
lifecycle-viewmodel アーティファクトと ViewModel、ViewModelStore、ViewModelStoreOwner、ViewModelProvider などの API が、Kotlin Multiplatform と互換性のあるアーティファクトで提供されるようになりました。
この変更に対応するため、java.lang.Class<T> を受け取る ViewModelProvider のメソッドなどには、kotlin.reflect.KClass<T> を受け取る同等のメソッドが用意されています。
Android のバイナリ互換性は維持されていますが、Android API サーフェスと共通 API サーフェスを比較すると、いくつかの重要な変更点があります。
ViewModelProviderインスタンスの作成は、コンストラクタを直接呼び出すのではなく、ViewModelProvider.create()メソッドを介して行われるようになりました。ViewModelProvider.NewInstanceFactoryとViewModelProvider.AndroidViewModelFactoryは Android でのみ使用できます。- カスタム Factory は、
ViewModelProvider.Factoryから拡張し、CreationExtrasを受け取るcreateメソッドを使用するか、viewModelFactoryKotlin DSL を使用することをおすすめします。
- カスタム Factory は、
- JVM 以外のプラットフォームでカスタム ファクトリなしで
ViewModelProviderを使用すると、UnsupportedOperationExceptionが発生します。JVM プラットフォームでは、カスタム ファクトリが提供されていない場合、引数なしの ViewModel コンストラクタを使用して互換性が維持されます。 Dispatchers.Mainが利用できないプラットフォーム(viewModelScopeEmptyCoroutineContextLinux)。
影響を受けるアーティファクト:
lifecycle-viewmodelでは、ほとんどの API がcommonに移動され、Android に加えて jvm と iOS がサポートされます。lifecycle-viewmodel-ktxが空になり、すべての API がlifecycle-viewmodelに移動しました。lifecycle-viewmodel-composeはすべての API をcommonに移動し、androidx.composeのマルチプラットフォーム サポートに一致する Android アーティファクトをリリースします。
動作の変更
InitializerViewModelFactory(viewModelFactoryビルダー関数を含む)は、同じclazz: KClass<VM : ViewModel>を持つinitializerがすでに追加されている場合、IllegalArgumentExceptionをスローするようになります。(Ic3a36)
既知の問題
lifecycle-*:2.8.0には、最小 Compose バージョン 1.7.0-alpha05(b/336842920)が必要です。
バージョン 2.8.0-rc01
2024 年 5 月 1 日
androidx.lifecycle:lifecycle-*:2.8.0-rc01 がリリースされました。バージョン 2.8.0-rc01 にはこれらの commit が含まれています。
バグの修正
lifecycle-commonクラスのベースライン プロファイルが正しくパッケージ化されない問題を修正しました。これらはlifecycle-runtimeAAR にパッケージ化されています。(aosp/3038274、b/322382422)- ViewModel にアタッチされた
AutoCloseableインスタンスのクリア方法における意図しない順序の変更を修正しました。以前の順序(addCloseable(String, AutoCloseable)、addClosable(AutoCloseable)、onCleared()の順)が復元されました。(aosp/3041632) - ネイティブ環境と JVM デスクトップ環境の
viewModelScopeのデフォルトの作成動作を改善しました。(aosp/3039221)
外部からの協力
- JVM Desktop でメインスレッドのチェックを改善してくださった Victor Kropp に感謝します。(aosp/3037116)
バージョン 2.8.0-beta01
2024 年 4 月 17 日
androidx.lifecycle:lifecycle-*:2.8.0-beta01 がリリースされました。バージョン 2.8.0-beta01 にはこれらの commit が含まれています。
新機能
lifecycle-runtime-composeアーティファクトが Kotlin マルチプラットフォームと互換性を持つようになり、コードがcommonに移動され、androidx.composeのマルチプラットフォーム サポートに合わせて Android アーティファクトが出荷されるようになりました。(If7a71、I4f4a0、b/331769623)
バージョン 2.8.0-alpha04
2024 年 4 月 3 日
androidx.lifecycle:lifecycle-*:2.8.0-alpha04 がリリースされました。バージョン 2.8.0-alpha04 にはこれらの commit が含まれています。
新機能
lifecycle-viewmodel-composeアーティファクトは Kotlin Multiplatform と互換性を持つようになり、コードをcommonに移動し、androidx.composeのマルチプラットフォーム サポートに一致する Android アーティファクトをリリースします。この変更に対応するため、コンポーザブルviewModelメソッドはjava.lang.Classに加えてKClassも受け取るようになりました。(b/330323282)
バグの修正
依存関係の更新
lifecycle-viewmodel-composeアーティファクトが Compose 1.6.0 に依存するようになりました。- Lifecycle が Profile Installer 1.3.1 に依存するようになりました。
バージョン 2.8.0-alpha03
2024 年 3 月 20 日
androidx.lifecycle:lifecycle-*:2.8.0-alpha03 がリリースされました。バージョン 2.8.0-alpha03 には、これらの commit が含まれています。
新機能
ViewModel.viewModelScopeがオーバーライド可能なコンストラクタ パラメータになり、独自のディスパッチャとSupervisorJob()を挿入したり、runTest内で使用可能なbackgroundScopeを使用してデフォルトをオーバーライドしたりできるようになりました。(I2817c、b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Kotlin マルチプラットフォームの互換性
lifecycle-viewmodel アーティファクトと ViewModel、ViewModelStore、ViewModelStoreOwner、ViewModelProvider などの API が、Kotlin Multiplatform と互換性のあるアーティファクトで提供されるようになりました。(b/214568825)
この変更に対応するため、java.lang.Class<T> を受け取る ViewModelProvider のメソッドなどには、kotlin.reflect.KClass<T> を受け取る同等のメソッドが用意されています。
Android のバイナリ互換性は維持されていますが、Android API サーフェスと共通 API サーフェスを比較すると、いくつかの重要な変更点があります。
ViewModelProviderインスタンスの作成は、コンストラクタを直接呼び出すのではなく、ViewModelProvider.create()メソッドを介して行われるようになりました。ViewModelProvider.NewInstanceFactoryとViewModelProvider.AndroidViewModelFactoryは Android でのみ使用できます。- カスタム Factory は、
ViewModelProvider.Factoryから拡張し、CreationExtrasを受け取るcreateメソッドを使用するか、viewModelFactoryKotlin DSL を使用することをおすすめします。
- カスタム Factory は、
- JVM 以外のプラットフォームでカスタム ファクトリなしで
ViewModelProviderを使用すると、UnsupportedOperationExceptionが発生します。JVM プラットフォームでは、カスタム ファクトリが提供されていない場合、引数なしの ViewModel コンストラクタを使用して互換性が維持されます。 Dispatchers.Mainが利用できないプラットフォーム(viewModelScopeEmptyCoroutineContextLinux)。
動作の変更
InitializerViewModelFactory(viewModelFactoryビルダー関数を含む)は、同じclazz: KClass<VM : ViewModel>を持つinitializerがすでに追加されている場合、IllegalArgumentExceptionをスローするようになります。(Ic3a36)
バグの修正
ViewModel.getCloseableで重複するキーが処理されるようになりました。keyにAutoCloseableリソースがすでに存在する場合、古いリソースはすぐに置き換えられて閉じられます。(Ibeb67)ViewModelのviewModelScopeへのアクセスがスレッドセーフになりました。(If4766、b/322407038)
外部からの協力
LocalLifecycleOwnerが Compose UI から lifecycle-runtime-compose に移動し、Compose ベースのヘルパー API を Compose UI の外部で使用できるようになりました。Jake Wharton 氏のご協力に感謝いたします。(I6c41b、b/328263448)
バージョン 2.8.0-alpha02
2024 年 2 月 21 日
androidx.lifecycle:lifecycle-*:2.8.0-alpha02 がリリースされました。バージョン 2.8.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
dropUnlessResumedAPI とdropUnlessStartedAPI が追加されました。これにより、LifecycleOwnerが指定されたLifecycle.Stateを下回った後でも発生するクリックなどのイベントをドロップできます。たとえば、Navigation Compose で、別の画面への遷移がすでに開始された後にクリック イベントが処理されないようにするために使用できます。onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83、b/317230685)
Kotlin 変換
ViewModelが Kotlin で記述されるようになりました。(I16f26、b/214568825)lifecycle-viewmodel-ktxKotlin 拡張機能がベース ライフサイクル モジュールに移動しました。(Id787b、b/274800183)lifecycle-runtime-ktxKotlin 拡張機能がベース ライフサイクル モジュールに移動しました。(Ic3686、b/274800183)lifecycle-livedata-core-ktxKotlin 拡張機能がベース ライフサイクル モジュールに移動しました。(I54a3d、b/274800183)
Kotlin マルチプラットフォームの互換性
Lifecycle、LifecycleOwner、LifecycleObserver、Lifecycle.State、Lifecycle.Event、LifecycleRegistryのコア Lifecycle API が、Kotlin マルチプラットフォームと互換性のあるアーティファクトで提供されるようになりました。(b/317249252)
API の変更
- キーなしで
LifecycleStartEffectとLifecycleResumeEffectを呼び出すと、これらの API がミラーリングするDisposableEffectAPI と同じ規則に従って、エラーが返されるようになりました。(Ib0e0c、b/323518079) ViewModelはCloseableではなくAutoCloseableを使用するようになりました。これは下位互換性のある変更です。(I27f8e、b/214568825)LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)を非推奨とし、LiveData.toPublisher(lifecycleOwner)に置き換えました。(Iabe29、b/262623005)
外部からの協力
- Lifecycle を Kotlin マルチプラットフォームに移行するにあたり、Jetbrains の Ivan Matkov 氏にご協力いただきました。(aosp/2926690、I0c5ac、If445d)
バージョン 2.8.0-alpha01
2024 年 1 月 24 日
androidx.lifecycle:lifecycle-*:2.8.0-alpha01 がリリースされました。バージョン 2.8.0-alpha01 に含まれるコミットについては、こちらをご覧ください。
新機能
ViewModelで、getCloseable()を介して取得できるkeyを使用したCloseableオブジェクトの追加がサポートされるようになりました。(I3cf63)
バージョン 2.7
バージョン 2.7.0
2024 年 1 月 10 日
androidx.lifecycle:lifecycle-*:2.7.0 がリリースされました。バージョン 2.7.0 に含まれる commit については、こちらをご覧ください。
2.6.0 以降の重要な変更
TestLifecycleOwnerに、状態の変更とすべてのLifecycleObserverコールバックが完了してから戻ることを保証する一時停止関数setCurrentState()が追加されました。特に、currentStateプロパティを直接設定する場合とは異なり、この方法ではrunBlockingを使用しないため、runTestによって提供されるコルーチンなどのコルーチン内で安全に使用できます。mapとswitchMapのLiveData拡張機能は、distinctUntilChangedの動作を反映するようになりました。LiveDataにvalueが設定されている場合、map/switchMap関数が直ちに呼び出され、返されたLiveDataのvalueが設定されます。これにより、初期値は最初のコンポーズの一部として設定されます(observeAsState()と併用した場合)。ただし、監視の動作は変更されません。ソースのLiveDataから更新された値は引き続き、LiveDataの監視を開始した後にのみ、適用されることになります。- 今回のリリースでは、プロセスの中断と再作成の後に
SavedStateHandleがカスタムParcelableクラスを適切に復元しない問題を修正しました。Android フレームワークによって失われる型情報のため、カスタム Parcelable の配列には追加の作業(正しい型の型付き配列の手動作成)が必要になります。get、getLiveData、getStateFlowのドキュメントでは、この制限が明示的に記載されるようになりました。 LifecycleObserverに関連付けられた proguard keep ルールが削除されました。つまり、リフレクションを介して API を使用する(たとえば、廃止された@OnLifecycleEventアノテーションを使用する)proguard されたコードは、特定のユースケースに合わせて独自の keep ルールを提供する必要があります。
ライフサイクル イベントのオブザーバビリティ
LifecycleEventObserverを使用する代わりに、Lifecycle.asFlow()拡張メソッドを介してLifecycle.EventのFlowを監視できるようになりました。- Jetpack Compose ユーザーは、
LifecycleEventEffectを使用してLifecycle.Eventに基づいて Compose サイドエフェクトを実行できるようになりました。
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Jetpack Compose ユーザーは、
LifecycleStartEffectとLifecycleResumeEffectを使用して、イベントのペア(開始から停止、再開から一時停止)をそれぞれ処理できます。この API はDisposableEffectにある API をミラーリングしたもので、状態が上方向に移動するときに行われた変更を、下方向に移動するときに元に戻す必要がある場合に適しています。
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
詳しくは、ライフサイクル イベントでコードを実行するをご覧ください。
ライフサイクル状態のオブザーバビリティ
- 現在の
Lifecycle.StateはLifecycle.currentStateFlowプロパティを介して監視できるようになりました。このプロパティは、valueが現在のLifecycle.StateであるStateFlowを返します。 - Jetpack Compose ユーザーは、
Lifecycle.currentStateAsState()拡張機能を使用して、Lifecycle.Stateを ComposeStateとして直接公開できます。これはlifecycle.currentStateFlow.collectAsState()と同じ(より短い代替手段)です。
詳しくは、フローを使ってライフサイクルの状態を収集するをご覧ください。
バージョン 2.7.0-rc02
2023 年 12 月 13 日
androidx.lifecycle:lifecycle-*:2.7.0-rc02 がリリースされました。バージョン 2.7.0-rc02 に含まれる commit については、こちらをご覧ください。
バグの修正
SavedStateHandleがプロセス終了および再作成後にカスタムParcelableクラスを適切に復元しない問題を修正しました。Android フレームワークによって失われる型情報のため、カスタム Parcelable の配列には追加の作業(正しい型の型付き配列の手動作成)が必要になります。get、getLiveData、getStateFlowのドキュメントでは、この制限について明示的に言及しています。(I0b55a)
バージョン 2.7.0-rc01
2023 年 11 月 15 日
androidx.lifecycle:lifecycle-*:2.7.0-rc01 がリリースされました。バージョン 2.7.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
LifecycleOwnerが変更された場合、LifecycleStartEffectとLifecycleResumeEffectが作用ブロックを正しく破棄して再作成するようになりました。(Ia25c6)
バージョン 2.7.0-beta01
2023 年 11 月 1 日
androidx.lifecycle:lifecycle-*:2.7.0-beta01 がリリースされました。変更はありません。バージョン 2.7.0-beta01 に含まれる commit については、こちらをご覧ください。
- ベータ版のバージョンアップ。このリリース バージョンに大きな変更はありません。
バージョン 2.7.0-alpha03
2023 年 10 月 18 日
androidx.lifecycle:lifecycle-*:2.7.0-alpha03 がリリースされました。バージョン 2.7.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
lifecycle-runtime-testingに、コルーチン内でcurrentStateフィールドを使用してTestLifecycleOwnerのLifecycle.Stateを設定しないようにするための新しい Lint チェックが追加されました。Lint チェックで、ブロックせずにLifecycle.Stateを設定できるsetCurrentStateの一時停止が提案されるようになりました。(Icf728、b/297880630)
バグの修正
LiveData.switchMapで、初回呼び出しと後続の呼び出しの両方で同じLiveDataインスタンスを返すと、LiveDataインスタンスがソースとして追加されない問題を修正しました。(Ibedcba7)
バージョン 2.7.0-alpha02
2023 年 9 月 6 日
androidx.lifecycle:lifecycle-*:2.7.0-alpha02 がリリースされました。バージョン 2.7.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
TestLifecycleOwnerには、suspend 関数setCurrentState()が含まれるようになりました。これにより、ユーザーはrunTestが提供するコルーチン内などからTestLifecycleOwnerを使用できるようになります。(I329de、b/259344129)
API の変更
lifecycle-livedata-ktxモジュールのすべてのファイルがメインのlifecycle-livedataモジュールに移動しました。(I10c6f、b/274800183)
動作の変更
LiveData.map()拡張機能とLiveData.switchMap()拡張機能は、以前のLiveDataに値が設定されている場合、返されたLiveDataのvalueを設定するようになりました。これにより、Jetpack Compose で結果の LiveData を使用すると、初期コンポジションで正しい状態が維持されます。(I91d2b、b/269479952)ViewModelがすでにonCleared()の呼び出しを受け取っている場合、ViewModelのaddCloseable()はCloseableをすぐに閉じます。(I4712e、b/280294730)
バグの修正
- Lifecycle
2.6.2から: 状態が復元され、親SavedStateRegistryで状態を実際に保存せずにsave()が呼び出され、その後状態が再度復元された場合、プロセスの終了後にSavedStateHandleが正しく復元されない問題を修正しました。これにより、rememberSaveableと Navigation Compose のNavHostの間のやり取りが修正されます。(aosp/2729289)
バージョン 2.7.0-alpha01
2023 年 7 月 26 日
androidx.lifecycle:lifecycle-*:2.7.0-alpha01 がリリースされました。バージョン 2.7.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
Lifecycle.StateがLifecycle.currentStateFlowを介して Compose で監視可能になりました。valueが現在のLifecycle.StateであるStateFlowを返します。(Ib212d、b/209684871)Lifecycle.EventをLifecycle.asFlow().でFlowとして監視できるようになりました(If2c0f、b/176311030)Lifecycle.Event.ON_RESUMEとLifecycle.Event.ON_PAUSEの両方のイベント コールバックに基づいて ComposeSideEffectを実行するために、LifecycleResumeEffectAPI が追加されました。(I60386、b/235529345)Lifecycle.Event.ON_STARTとLifecycle.Event.ON_STOPのイベント コールバックに基づいて ComposeSideEffectを実行するために、LifecycleStartEffectAPI が追加されました。(I5a8d1、b/235529345)Lifecycle.Eventに基づいて ComposeSideEffectを実行するために、LifecycleEventEffectAPI が追加されました。(Ic9794、b/235529345)Lifecycle.collectAsState()拡張機能が追加され、ComposeStateとしてLifecycle.Stateを直接公開できるようになりました。これはlifecycle.currentStateFlow.collectAsState()と同じ(より短い代替手段)です。(I11015、b/235529345)
バグの修正
LiveData.distinctUntilChanged()拡張機能は、以前のLiveDataに値が設定されている場合、返されたLiveDataのvalueを設定するようになりました。これによって監視の動作が変わることはありません。ソースのLiveDataから更新された値は引き続き、distinctUntilChanged()から返されるLiveDataの監視を開始した後にのみ、適用されることになります。(Ib482f)LifecycleObserverに関連付けられた proguard keep ルールが削除されました。つまり、リフレクションを介して API を使用する ProGuard されたコードは、特定のユースケースに合わせて独自の保持ルールを提供する必要があります。(Ia12fd)
バージョン 2.6
バージョン 2.6.2
2023 年 9 月 6 日
androidx.lifecycle:lifecycle-*:2.6.2 がリリースされました。バージョン 2.6.2 に含まれる commit については、こちらをご覧ください。
バグの修正
- 状態が復元され、親
SavedStateRegistryに状態を実際に保存せずにsave()が呼び出され、その後状態が再度復元された場合、プロセス終了後にSavedStateHandleが正しく復元されない問題を修正しました。これにより、rememberSaveableと Navigation Compose のNavHostの間のやり取りが修正されます。(aosp/2729289)
バージョン 2.6.1
2023 年 3 月 22 日
androidx.lifecycle:lifecycle-*:2.6.1 がリリースされました。バージョン 2.6.1 に含まれる commit については、こちらをご覧ください。
依存関係の更新
lifecycle-viewmodel-savedstateが SavedState1.2.1に依存するようになりました。(cd7251)- Lifecycle が ProfileInstaller
1.3.0に依存するようになりました。(f9d30b)
バージョン 2.6.0
2023 年 3 月 8 日
androidx.lifecycle:lifecycle-*:2.6.0 がリリースされました。バージョン 2.6.0 に含まれる commit については、こちらをご覧ください。
2.5.0 以降の重要な変更
LiveDataに明示的な値が設定されたことがあるかどうかを示す新しいisInitializedプロパティが、LiveDataに追加されました。これにより、値が設定されたことがないliveData.valueにより返されたnull値か、明示的に返されたnull値かを区別できるようになりました。MediatorLiveDataに初期値を設定するためのコンストラクタが追加されました。collectAsStateWithLifecycle()のStateFlowとFlowに、フローから収集してライフサイクル対応の方法で Compose の状態として最新の値を表す拡張機能を追加しました。Lifecycle.launchWhenXのメソッドとLifecycle.whenXのメソッドが非推奨になりました。一時停止しているディスパッチャを使用するとリソースが無駄になることがあったためです。Lifecycle.repeatOnLifecycleを使用することをおすすめします。一時的な作業の中断について詳しくは、こちらで、一時的な作業の中断が本質的に安全でない理由について説明しています。- Kotlin 変換 - 多数の Lifecycle クラスが Kotlin に変換されました。変換されたクラスはすべて、以前のバージョンとのバイナリ互換性を維持します。次のクラスは、Kotlin で記述されたクラスに対するソース互換性のない変更があります。
ViewTreeLifecycleOwner、LiveDataReactiveStreams、HasDefaultViewModelProviderFactory、ViewTreeViewModelStoreOwner、Transformations、ViewModelStoreOwner、LifecycleOwner
次の表に、ライフサイクルの新しいバージョンのソース変換を示します。
| Lifecycle 2.5 | Lifecycle 2.5(KTX) | Lifecycle 2.6 |
|---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Kotlin で作成された
ObserverのonChangedメソッドの null 可能性が、ジェネリック型の null 可能性と一致するようになりました。Observer.onChanged()で null 値許容型を受け入れる場合は、null 値許容型でObserverをインスタンス化する必要があります。 - これらのクラスも Kotlin に変換されましたが、ソース互換性は維持されています。
DefaultLifecycleObserver、LifecycleEventObserver、Lifecycle、LifecycleRegistry、LifecycleObserver、ViewModelStore、AndroidViewModel、AbstractSavedStateViewModelFactory、LifecycleService、ServiceLifecycleDispatcher、ProcessLifecycleOwner
バージョン 2.6.0-rc01
2023 年 2 月 22 日
androidx.lifecycle:lifecycle-*:2.6.0-rc01 がリリースされました。バージョン 2.6.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
LiveData.distinctUntilChanged()拡張機能は、以前のLiveDataに値が設定されている場合、返されたLiveDataのvalueを設定するようになりました。これによって監視の動作が変わることはありません。ソースのLiveDataから更新された値は引き続き、distinctUntilChanged()から返されるLiveDataの監視を開始した後にのみ、適用されることになります。(Ib482f)
バージョン 2.6.0-beta01
2023 年 2 月 8 日
androidx.lifecycle:lifecycle-*:2.6.0-beta01 がリリースされました。バージョン 2.6.0-beta01 に含まれる commit については、こちらをご覧ください。
Kotlin 変換
LifecycleOwnerが Kotlin で記述されるようになりました。Kotlin で記述されたコードに対するソース互換性のない変更であるため、以前のgetLifecycle()関数を実装するのではなく、lifecycleプロパティをオーバーライドしなければならなくなりました。(I75b4b、b/240298691)ViewModelStoreOwnerが Kotlin で記述されるようになりました。Kotlin で記述されたコードに対するソース互換性のない変更であるため、以前のgetViewModelStore()関数を実装するのではなく、viewModelStoreプロパティをオーバーライドしなければならなくなりました。(I86409、b/240298691)lifecycleScopeフィールドを提供するLifecycleOwnerの Kotlin 拡張機能がlifecycle-runtime-ktxからlifecycle-commonアーティファクトに移動しました。(I41d78、b/240298691)coroutineScopeフィールドを提供するLifecycleの Kotlin 拡張機能がlifecycle-runtime-ktxからlifecycle-commonアーティファクトに移動しました。(Iabb91、b/240298691)
バージョン 2.6.0-alpha05
2023 年 1 月 25 日
androidx.lifecycle:lifecycle-*:2.6.0-alpha05 がリリースされました。バージョン 2.6.0-alpha05 に含まれる commit については、こちらをご覧ください。
Kotlin 変換
Transformationsが Kotlin で記述されるようになりました。これは、Transformations.mapなどの構文を直接使用して Kotlin で記述されたクラスに対する、ソース互換性のない変更となります。Kotlin コードは、Kotlin 拡張メソッド構文を使用することが必要になります。この構文は以前はlifecycle-livedata-ktxを使用している場合にのみ使用可能だったものです。Java プログラミング言語を使用している場合、androidx.arch.core.util.Functionメソッドを受け取るこれらのメソッドのバージョンは非推奨となり、Kotlin のFunction1を受け取るバージョンが代わりとなります。この変更はバイナリ互換性を維持します。(I8e14f)ViewTreeViewModelStoreOwnerが Kotlin で記述されるようになりました。これは Kotlin で記述されたクラスに対するソース互換性のない変更です。以前に設定したオーナーを設定、確認するには、androidx.lifecycle.setViewTreeViewModelStoreOwnerとandroidx.lifecycle.findViewTreeViewModelStoreOwnerのViewで Kotlin 拡張メソッドを直接インポートして使用する必要があります。Java プログラミング言語で記述された実装に対しては、バイナリ互換性があり、ソース互換性を維持しています。(Ia06d8、Ib22d8、b/240298691)HasDefaultViewModelProviderFactoryインターフェースが Kotlin で記述されるようになりました。これは Kotlin で記述されたクラスに対するソース互換性のない変更となります。これまで対応していた関数を実装するのではなく、defaultViewModelProviderFactoryプロパティとdefaultViewModelCreationExtrasプロパティをオーバーライドすることが必要になります。(Iaed9c、b/240298691)Observerが Kotlin で記述されるようになりました。onChanged()メソッドのパラメータにvalueという名前を使用するようになりました。(Iffef2、I4995e、b/240298691)AndroidViewModel、AbstractSavedStateViewModelFactory、LifecycleService、ServiceLifecycleDispatcher、ProcessLifecycleOwnerが Kotlin で記述されるようになりました。(I2e771、Ibae40、I160d7、I08884、I1cda7、b/240298691)
バージョン 2.6.0-alpha04
2023 年 1 月 11 日
androidx.lifecycle:lifecycle-*:2.6.0-alpha04 がリリースされました。バージョン 2.6.0-alpha04 に含まれる commit については、こちらをご覧ください。
新機能
LiveDataに明示的な値が設定されたことがあるかどうかを示す新しいisInitializedプロパティが、LiveDataに追加されました。これにより、値が設定されたことがないliveData.valueにより返されたnull値か、明示的に返されたnull値かを区別できるようになりました。(Ibd018)
API の変更
lifecycle-runtime-composeのcollectAsStateWithLifecycle()API が試験運用版ではなくなりました。(I09d42、b/258835424)Lifecycle.launchWhenXのメソッドとLifecycle.whenXのメソッドが非推奨になりました。一時停止しているディスパッチャを使用するとリソースが無駄になることがあったためです。Lifecycle.repeatOnLifecycleを使用することをおすすめします。(Iafc54、b/248302832)
Kotlin 変換
ViewTreeLifecycleOwnerが Kotlin で記述されるようになりました。これは Kotlin で記述されたクラスに対するソース互換性のない変更です。以前に設定したオーナーを設定、確認するには、androidx.lifecycle.setViewTreeLifecycleOwnerとandroidx.lifecycle.findViewTreeLifecycleOwnerのViewで Kotlin 拡張メソッドを直接インポートして使用する必要があります。lifecycle-runtime-ktxにある以前の Kotlin 拡張機能に代わるものです。Java プログラミング言語で記述された実装に対しては、バイナリ互換性があり、ソース互換性を維持しています。(I8a77a、I5234e、b/240298691)LiveDataReactiveStreamsが Kotlin で記述されるようになりました。以前lifecycle-reactivestreams-ktxにあった Kotlin 拡張機能がlifecycle-reactivestreamsモジュールに移動し、Kotlin で記述されたコードのメインのサーフェスになりました。Kotlin 拡張メソッド API を使用していなかった場合は、Kotlin で記述されたコードに対するソース互換性のない変更となります。(I2b1b9、I95d22、b/240298691)DefaultLifecycleObserver、LifecycleEventObserver、Lifecycle、LifecycleRegistry、LifecycleObserver、ViewModelStoreが Kotlin で記述されるようになりました。(Iadffd、I60034、I8c52c、I9593d、I01fe1、I59a23、b/240298691)
バグの修正
- 間違ったクラスタイプで
get()を呼び出してもClassCastExceptionでSavedStateHandleがクラッシュしなくなりました。(I6ae7c)
バージョン 2.6.0-alpha03
2022 年 10 月 24 日
androidx.lifecycle:lifecycle-*:2.6.0-alpha03 がリリースされました。バージョン 2.6.0-alpha03 に含まれる commit については、こちらをご覧ください。
バグの修正
- 異なる Lifecycle モジュール間の制約が意図したとおりに動作しない問題を修正しました。(I18d0d、b/249686765)
LifecycleRegistry.moveToState()がスローするエラーに、エラーの原因となるコンポーネントをデベロッパーに知らせるためのより有用なエラー メッセージが含まれるようになりました。(Idf4b2、b/244910446)
バージョン 2.6.0-alpha02
2022 年 9 月 7 日
androidx.lifecycle:lifecycle-*:2.6.0-alpha02 がリリースされました。バージョン 2.6.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
MediatorLiveDataに初期値を設定するためのコンストラクタが追加されました。(Ib6cc5、b/151244085)
バグの修正
Lifecycleのアーティファクトに制約が追加され、依存関係のあるすべての Lifecycle アーティファクトで必ず同じバージョンが使用されるようになりました。それによって、依存関係にあるアーティファクトのいずれかがアップグレードされると、自動的に他もすべてアップグレードされるようになりました。(b/242871265)FlowLiveData.asFlow()は、独自のChannel実装を使用する代わりにcallbackFlowを作成することで、スレッドセーフを確保し、コンテキストを保持できるようになりました。(I4a8b2、b/200596935)FlowLiveDataのasLiveData関数が、新しいLiveDataオブジェクトの作成時にStateFlowの初期値を保持するようになりました。(I3f530、b/157380488)- Lifecycle
2.5.1以降:AndroidViewModelFactoryのカスタム実装で、ステートフル コンストラクタをLifecycle2.4 以降で使用している際に、create(modelClass)関数を正しく呼び出せるようになりました。(I5b315、b/238011621)
バージョン 2.6.0-alpha01
2022 年 6 月 29 日
androidx.lifecycle:lifecycle-*:2.6.0-alpha01 がリリースされました。バージョン 2.6.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
collectAsStateWithLifecycleのStateFlowとFlowに、フローから収集してライフサイクル対応の方法で Compose の状態として最新の値を表す拡張機能を追加しました。フローが収集されて、ライフサイクルが少なくとも特定のLifecycle.Stateに達すると新しい出力が状態の値に設定されます。ライフサイクルがLifecycle.Stateを下回ると、フローの収集は停止し、状態の値は更新されなくなります。(I1856e、b/230557927)
バージョン 2.5
バージョン 2.5.1
2022 年 7 月 27 日
androidx.lifecycle:lifecycle-*:2.5.1 がリリースされました。バージョン 2.5.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- ステートフル
AndroidViewModelFactoryコンストラクタをLifecycle2.4 以降で使用している際に、AndroidViewModelFactoryのカスタムの実装がcreate(modelClass)関数を正しく呼び出せるようになりました。(I5b315、b/238011621)
バージョン 2.5.0
2022 年 6 月 29 日
androidx.lifecycle:lifecycle-*:2.5.0 がリリースされました。バージョン 2.5.0 に含まれる commit については、こちらをご覧ください。
2.4.0 以降の重要な変更
LiveDataを使用する代わりに値の変更をモニタリングする KotlinStateFlowを返すgetStateFlow()API をSavedStateHandleが提供するようになりました。ViewModel CreationExtras - カスタムの
ViewModelProvider.Factoryを記述する際、AndroidViewModelFactoryまたはAbstractSavedStateViewModelFactoryを拡張してそれぞれApplicationまたはSavedStateHandleへのアクセス権を取得する必要がなくなりました。今後これらのフィールドは、createの新しいオーバーロードであるcreate(Class<T>, CreationExtras)を介してCreationExtrasとしてすべてのViewModelProvider.Factoryサブクラスに提供されます。このようなエクストラは、Activity1.5.0または Fragment1.5.0を使用している場合にそれぞれ Activity または Fragment から自動的に提供されます。class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }lifecycle-viewmodelがviewModelFactoryKotlin DSL を提供するようになりました。これにより、CreationExtrasをメインのデータソースとして使用して、1 つ以上のラムダ初期化子(カスタム ファクトリがサポートする特定のViewModelクラスごとに 1 つ)に関してViewModelProvider.Factoryを定義できるようになります。val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }lifecycle-viewmodel-composeがラムダ ファクトリを受け取るviewModel()API を提供するようになりました。これにより、カスタムのViewModelProvider.Factoryを作成せずに、ViewModelインスタンスを作成できるようになります。// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }SavedStateHandle Compose セーバー統合 -
lifecycle-viewmodel-composeアーティファクトがSavedStateHandle.saveableに新しい試験運用版 API を取り入れるようになりました。これにより、ViewModel のSavedStateHandleによってサポートされたrememberSaveableのような動作が可能となります。class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }addCloseable()API と新しいコンストラクタ オーバーロードを追加しました。これにより、ViewModelがクリアされるときに閉じられる 1 つ以上のCloseableオブジェクトをViewModelに追加できるようになり、onCleared()で手動の作業が不要になります。たとえば、ViewModel に追加するが、テストで制御することができるコルーチン スコープを作成するために、
Closeableを実装するCoroutineScopeを作成できます。class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }これは、
viewModelScopeと同じ存続期間を保ちつつViewModelコンストラクタで使用できます。class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
動作の変更
Lifecycle.StateをINITIALIZEDからDESTROYEDに変更しようとすると、Lifecycleにオブザーバーがアタッチされているかどうかにかかわらず、常にIllegalStateExceptionがスローされるようになりました。LifecycleRegistryは、オブザーバーがDESTROYED状態に達したときにオブザーバーをクリアするようになりました。
バージョン 2.5.0-rc02
2022 年 6 月 15 日
androidx.lifecycle:lifecycle-*:2.5.0-rc02 がリリースされました。バージョン 2.5.0-rc02 に含まれる commit については、こちらをご覧ください。
バグの修正
- compileOnly Lifecycle 依存関係の以前のバージョンとバージョン 2.5 以降を混在させたときに
ViewModelProviderがクラッシュしなくなりました。(I81a66、b/230454566)
バージョン 2.5.0-rc01
2022 年 5 月 11 日
androidx.lifecycle:lifecycle-*:2.5.0-rc01 がリリースされました。バージョン 2.5.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
MediatorLiveData.addSource()がnullソースを渡すとき、これまでのようにnullソースをオブザーバーに伝播するのではなく、NullPointerExceptionをスローするようになりました。(Ibd0fb、b/123085232)
バージョン 2.5.0-beta01
2022 年 4 月 20 日
androidx.lifecycle:lifecycle-*:2.5.0-beta01 がリリースされました。バージョン 2.5.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
- 状態を
SavedStateHandleに維持するためのキーとしてプロパティ名を使用するSavedStateHandle.saveableプロパティ デリゲートを追加しました。(I8bb86、b/225014345)
バグの修正
- メインでない下部のナビゲーション タブで別の
NavHost内に 1 つのNavHostをネストすると、複数のバックスタックを使用する場合にIllegalStateExceptionが発生する問題を修正しました。(I11bd5、b/228865698)
バージョン 2.5.0-alpha06
2022 年 4 月 6 日
androidx.lifecycle:lifecycle-*:2.5.0-alpha06 がリリースされました。バージョン 2.5.0-alpha06 に含まれる commit については、こちらをご覧ください。
新機能
rememberSaveableと同等の機能を実現するため、試験運用版のMutableStateのオーバーロードをSavedStateHandle.saveableに追加しました。(I38cfe、b/224565154)
API の変更
CreationExtrasがシールクラスではなく抽象クラスになりました。(Ib8a7a)
バグの修正
SavedStateHandleControllerによって引き起こされるIllegalStateException: Already attached to lifecycleOwnerエラーを修正しました。(I7ea47、b/215406268)
バージョン 2.5.0-alpha05
2022 年 3 月 23 日
androidx.lifecycle:lifecycle-*:2.5.0-alpha05 がリリースされました。バージョン 2.5.0-alpha05 に含まれる commit については、こちらをご覧ください。
新機能
lifecycle-viewmodel-composeモジュールでSavedStateHandleSaverが提供されるようになりました。この試験運用版 API は、SavedStateHandleの値が、rememberSaveableが使用するものと同じ保存済みインスタンスの状態と正しく統合されるようにします。(Ia88b7、b/195689777)
API の変更
- Java での Lifecycle 2.3 と Lifecycle のそれより新しいバージョンとの互換性に関する問題を修正しました。(I52c8a、b/219545060)
バグの修正
SavedStateViewFactoryが、SavedStateRegistryOwnerで初期化された場合でもCreationExtrasを使用できるようになりました。エクストラが指定されている場合、初期化された引数は無視されます。(I6c43b、b/224844583)
バージョン 2.5.0-alpha04
2022 年 3 月 9 日
androidx.lifecycle:lifecycle-*:2.5.0-alpha04 がリリースされました。バージョン 2.5.0-alpha04 に含まれる commit については、こちらをご覧ください。
API の変更
LiveDataを使用する代わりに値の変更をモニタリングする KotlinStateFlowを返すgetStateFlow()API をSavedStateHandleが提供するようになりました。(Iad3ab、b/178037961)
バージョン 2.5.0-alpha03
2022 年 2 月 23 日
androidx.lifecycle:lifecycle-*:2.5.0-alpha03 がリリースされました。バージョン 2.5.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
addCloseable()API と新しいコンストラクタ オーバーロードを追加しました。これにより、ViewModelがクリアされるときに閉じられる 1 つ以上のCloseableオブジェクトをViewModelに追加できるようになり、onCleared()で手動の作業が不要になります。(I55ea0)lifecycle-viewmodelがInitializerViewModelFactoryを提供するようになりました。これにより、CreationExtrasをメインのデータソースとして使用して、特定のViewModelクラスを処理するためのラムダを追加できるようになります。(If58fc、b/216687549)lifecycle-viewmodel-composeがラムダ ファクトリを受け取るviewModel()API を提供するようになりました。これにより、カスタムのViewModelProvider.Factoryを作成せずに、ViewModelインスタンスを作成できるようになります。(I97fbb、b/216688927)
API の変更
lifecycle-viewmodel-composeからCreationExtrasでViewModelを作成できるようになりました。(I08887、b/216688927)
動作の変更
Lifecycle.StateをINITIALIZEDからDESTROYEDに変更しようとすると、Lifecycleにオブザーバーがアタッチされているかどうかにかかわらず、常にIllegalStateExceptionがスローされるようになりました。(I7c390、b/177924329)LifecycleRegistryは、オブザーバーがDESTROYED状態に達したときにオブザーバーをクリアするようになりました。(I4f8dd、b/142925860)
バージョン 2.5.0-alpha02
2022 年 2 月 9 日
androidx.lifecycle:lifecycle-*:2.5.0-alpha02 がリリースされました。バージョン 2.5.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
SavedStateHandleとSavedStateViewModelFactoryが Kotlin に変換されました。これにより、両クラスのジェネリクスの null 可能性が改善されました。(Ib6ce2、b/216168263、I9647a、b/177667711)LiveDataswitchMap関数パラメータの出力が null 許容型になりました。(I40396、b/132923666)LiveData-ktx 拡張機能に@CheckResultアノテーションが付けられ、これらの関数を呼び出すときに結果を使用することが強制されるようになりました。(Ia0f05、b/207325134)
動作の変更
SavedStateHandleが、指定されたキーの値が存在しない場合に defaultValue を適切に保存するようになりました。(I1c6ce、b/178510877)
バグの修正
- Lifecycle
2.4.1以降:ProcessLifecycleInitializerがStartupExceptionをスローしないようにする修正をデフォルトで利用できるようにするため、Startup 1.1.1 に依存するようにlifecycle-processを更新しました。(Ib01df、b/216490724) - パラメータの順序が誤っているカスタム
AndroidViewModelクラスでViewModelを作成しようとするときのエラー メッセージを改善しました。(I340f7、b/177667711) - アプリを設定せずに、
AndroidViewModelFactoryを使用してCreationExtrasを介してビューモデルを作成できるようになりました。(I6ebef、b/217271656)
バージョン 2.5.0-alpha01
2022 年 1 月 26 日
androidx.lifecycle:lifecycle-*:2.5.0-alpha01 がリリースされました。バージョン 2.5.0-alpha01 に含まれる commit については、こちらをご覧ください。
ViewModel CreationExtras
今回のリリースでは、ViewModel の作成方法を再構築するための土台作りを行いました。これにより、それぞれが機能を追加する ViewModelProvider.Factory のサブクラスの厳密なセット(AndroidViewModelFactory による Application コンストラクタ パラメータの許可、SavedStateViewModelFactory や AbstractSavedStateViewModelFactory による SavedStateHandle コンストラクタ パラメータの許可など)を提供する代わりに、CreationExtras という新しいコンセプトに基づくステートレスなファクトリの世界に移行しようとしています。(Ia7343、b/188691010、b/188541057)
この変更により、ViewModelProvider は ViewModelProvider.Factory の以前の create(Class<T>) メソッドを直接呼び出すことはなくなりました。代わりに、create の新しいオーバーロードである create(Class<T>, CreationExtras) を呼び出します。ViewModelProvider.Factory インスタンスの直接実装は、この新しい CreationExtras のそれぞれに次のようにアクセスできます。
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: このStringにより、ViewModelProvider.get()に渡したカスタムキーにアクセスできます。ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYにより、Applicationクラスにアクセスできます。SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYにより、この ViewModel の作成に使用するSavedStateRegistryOwnerにアクセスできます。SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYにより、この ViewModel の作成に使用するViewModelStoreOwnerにアクセスできます。SavedStateHandleSupport.DEFAULT_ARGS_KEYにより、SavedStateHandleの作成に使用する引数のBundleにアクセスできます。
上記のエクストラは、Activity 1.5.0-alpha01、Fragment 1.5.0-alpha01、Navigation 2.5.0-alpha01 を使用する場合に、デフォルトで提供されます。これより前のバージョンのライブラリを使用すると、CreationExtras は空になります。ViewModelProvider.Factory の既存のサブクラスはすべて、前のバージョンのライブラリが使用する以前の作成パスと、今後使用される CreationExtras のパスの両方をサポートするよう書き換えられました。
この CreationExtras を使用することで、厳密な Factory サブクラスの階層に依存せずに、必要な情報のみを各 ViewModel に渡す ViewModelProvider.Factory を作成できます。
class CustomFactory : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
return when (modelClass) {
HomeViewModel::class -> {
// Get the Application object from extras
val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
// Pass it directly to HomeViewModel
HomeViewModel(application)
}
DetailViewModel::class -> {
// Create a SavedStateHandle for this ViewModel from extras
val savedStateHandle = extras.createSavedStateHandle()
DetailViewModel(savedStateHandle)
}
else -> throw IllegalArgumentException("Unknown class $modelClass")
} as T
}
}
SavedStateHandleSupport の CreationExtras で createSavedStateHandle() Kotlin 拡張関数を使用して、それを必要とする 1 つの ViewModel に対してのみ SavedStateHandle を作成します。(Ia6654、b/188541057)
カスタムの CreationExtras を作成するには、ComponentActivity または Fragment で getDefaultViewModelCreationExtras() をオーバーライドすることにより、組み込み型のアシスト付きインジェクションとしてカスタム ViewModelProvider.Factory 向けに使えるようにします。このようなエクストラは、ViewModelProvider で直接使用する場合、または by viewModels() や by activityViewModels() の Kotlin プロパティ拡張を使用する場合に、自動的にカスタム Factory で利用できるようになります。(I79f2b、b/207012584、b/207012585、b/207012490)
バグの修正
SavedStateHandleに指定されたデフォルト値が、SavedStateHandleから明確に削除された場合でも、プロセスの終了および再作成後に再表示される問題を修正しました。その結果、SavedStateHandleがデフォルト値と復元値を結合することはなくなり、復元値のみを信頼できる情報源として使用するようになります。(I53a4b)
バージョン 2.4
バージョン 2.4.1
2022 年 2 月 9 日
androidx.lifecycle:lifecycle-*:2.4.1 がリリースされました。バージョン 2.4.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- Lifecycle
2.5.0-alpha01からのバックポート:SavedStateHandleに指定されたデフォルト値が、SavedStateHandleから明確に削除された場合でも、プロセスの終了と再作成の後に再表示される問題を修正しました。その結果、SavedStateHandleがデフォルト値と復元値を結合することはなくなり、復元値のみを信頼できる情報源として使用するようになります。(I53a4b) lifecycle-processが Androidx Startup 1.1.1 に依存するようになり、ProcessLifecycleInitializerを使用するとStartupExceptionが発生する回帰が修正されました。(b/216490724)
バージョン 2.4.0
2021 年 10 月 27 日
androidx.lifecycle:lifecycle-*:2.4.0 がリリースされました。バージョン 2.4.0 に含まれる commit については、こちらをご覧ください。
2.3.0 以降の重要な変更
@OnLifecycleEventのサポートが終了しました。代わりにLifecycleEventObserverまたはDefaultLifecycleObserverを使用してください。androidx.lifecycle:lifecycle-viewmodel-composeライブラリが追加されました。viewModel()コンポーザブルとLocalViewModelStoreOwnerが用意されています。- ソースレベルで互換性を破る変更:
ViewModelProviderが Kotlin で書き換えられました。ViewModelProvider.Factory.createメソッドで null 許容のジェネリックが使用できなくなりました。
- ソースレベルで互換性を破る変更:
- 新しいコルーチン API が
androidx.lifecycle:lifecycle-runtime-ktxに追加されました。 Lifecycle.repeatOnLifecycle: Lifecycle が特定の状態にあるときに、コルーチン内のコードブロックを実行する API。ライフサイクルがターゲット状態になるかターゲット状態でなくなるたびに、ブロックがキャンセルされて再起動されます。Flow.flowWithLifecycle: ライフサイクルが特定の状態にあるときに、アップストリーム Flow から値を出力する API。DefaultLifecycleObserverがlifecycle.lifecycle-common-java8からlifecycle.lifecycle-commonに移動しました。lifecycle.lifecycle-common-java8がlifecycle.lifecycle-commonに機能を追加することがなくなったため、依存関係をlifecycle.lifecycle-commonに置き換えることができます。lifecycle-viewmodel-ktxからの非コルーチン API がlifecycle-viewmodelモジュールに移動しました。lifecycle-processがandroidx.startupを使用してProcessLifecycleOwnerを初期化するようになりました。以前は、これは
androidx.lifecycle.ProcessLifecycleOwnerInitializerによって行われていました。過去にプロセスのライフサイクルの初期化に使用されていた
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.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(または)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
バージョン 2.4.0-rc01
2021 年 9 月 29 日
androidx.lifecycle:lifecycle-*:2.4.0-rc01 がリリースされました。Lifecycle 2.4.0-beta01 からの変更はありません。バージョン 2.4.0-rc01 に含まれる commit については、こちらをご覧ください。
バージョン 2.4.0-beta01
2021 年 9 月 15 日
androidx.lifecycle:lifecycle-*:2.4.0-beta01 がリリースされました。バージョン 2.4.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
@OnLifecycleEventのサポートが終了しました。代わりにLifecycleEventObserverまたはDefaultLifecycleObserverを使用してください。(I5a8fa)- DefaultLifecycleObserver が
androidx.lifecycle.lifecycle-common-java8からandroidx.lifecycle.lifecycle-commonに移動しました。androidx.lifecycle.lifecycle-common-java8がandroidx.lifecycle.lifecycle-commonに機能を追加することがなくなったため、依存関係をandroidx.lifecycle.lifecycle-commonに置き換えることができます。(I021aa) lifecycle-viewmodel-ktxからの非コルーチン API がlifecycle-viewmodelモジュールに移動しました。(I6d5b2)
外部からの協力
バージョン 2.4.0-alpha03
2021 年 8 月 4 日
androidx.lifecycle:lifecycle-*:2.4.0-alpha03 がリリースされました。バージョン 2.4.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
- ソースレベルで互換性を破る変更: ViewModelProvider が Kotlin で書き換えられました。
ViewModelProvider.Factory.createメソッドで null 許容のジェネリックが使用できなくなりました。(I9b9f6)
動作の変更
Lifecycle.repeatOnLifecycle:blockが、実行を繰り返すたびに常に連続的に呼び出されるようになりました。(Ibab33)
外部からの協力
repeatOnLifecycleドキュメントのコード スニペットを修正していただいた chao2zhang 氏に感謝いたします。#205
バージョン 2.4.0-alpha02
2021 年 6 月 16 日
androidx.lifecycle:lifecycle-*:2.4.0-alpha02 がリリースされました。バージョン 2.4.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
onStart()またはonResume()でrepeateOnLifecycleが正しく使用されていないことを検出する、新しいRepeatOnLifecycleWrongUsagelint チェックをlifecycle-runtime-ktxに追加しました。(706078、b/187887400)
API の変更
LifecycleOwner.addRepeatingJobAPI が削除され、構造化された同時実行が優先される、推論が容易なLifecycle.repeatOnLifecycleに置き換えられました。(I4a3a8)- 他の
androidx.startup.Initializerが依存関係として使用できるようにProcessLifecycleInitializerを一般公開しました。(I94c31)
バグの修正
- フィールドに修飾子がある場合の
NullSafeMutableLiveDatalint チェックに関する問題を修正しました。(#147、b/183696616) - ジェネリックを使用した場合の
NullSafeMutableLiveDatalint チェックに関する別の問題を修正しました。(#161、b/184830263)
外部からの協力
NullSafeMutableLiveDatalint チェックの改善にご協力いただいた maxsav 氏に感謝いたします。(#147、b/183696616)NullSafeMutableLiveDatalint チェックの改善にご協力いただいた kozaxinan 氏に感謝いたします。(#161、b/184830263)
バージョン 2.4.0-alpha01
2021 年 3 月 24 日
androidx.lifecycle:lifecycle-*:2.4.0-alpha01 がリリースされました。バージョン 2.4.0-alpha01 に含まれる commit については、こちらをご覧ください。
動作の変更
lifecycle-processがandroidx.startupを使用してProcessLifecycleOwnerを初期化するようになりました。以前は、これは
androidx.lifecycle.ProcessLifecycleOwnerInitializerによって行われていました。過去にプロセスのライフサイクルの初期化に使用されていた
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.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>(または)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
API の変更
Lifecycle.repeatOnLifecycleAPI を使用してライフサイクルが特定の状態にあるときに、アップストリーム Flow から値を出力するFlow.flowWithLifecycleAPI を追加しました。これは新しいLifecycleOwner.addRepeatinJobAPI に代わるものです。(I0f4cd)
バグの修正
- Lifecycle 2.3.1 以降:
NonNullableMutableLiveDatalint ルールで、null 許容が異なるフィールド変数を適切に区別できるようになりました。(b/169249668)
Lifecycle Viewmodel Compose バージョン 1.0.0
バージョン 1.0.0-alpha07
2021 年 6 月 16 日
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。
API の互換性を破る変更
viewModel()がオプションのViewModelStoreOwnerを受け取るようになったことで、LocalViewModelStoreOwner以外のオーナーを簡単に操作できるようになりました。たとえば、viewModel(navBackStackEntry)を使用して、特定のナビゲーション グラフに関連付けられている ViewModel を取得できるようになりました。(I2628d、b/188693123)
バージョン 1.0.0-alpha06
2021 年 6 月 2 日
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください。
Compose バージョン 1.0.0-beta08 との互換性を確保するために更新しました。
バージョン 1.0.0-alpha05
2021 年 5 月 18 日
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください。
新機能
- Compose バージョン
1.0.0-beta07との互換性を確保するために更新しました。
バグの修正
- ui-test-manifest と ui-tooling-data の AndroidManifest ファイルに、Android 12 との互換性が備わりました。(I6f9de、b/184718994)
バージョン 1.0.0-alpha04
2021 年 4 月 7 日
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。
依存関係の変更
- このバージョンを使用すると、
androidx.hilt:hilt-navigation-composeとandroidx.navigation:navigation-composeがandroidx.compose.compiler:compiler:1.0.0-beta04とandroidx.compose.runtime:runtime:1.0.0-beta04に対する依存関係を同期できます。1.0.0 の場合、コンパイラとランタイムが一致する必要があります。
バージョン 1.0.0-alpha03
2021 年 3 月 10 日
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
LocalViewModelStoreOwner.currentが null 許容のViewModelStoreOwnerを返すようになり、現在の合成中にViewModelStoreOwnerが使用可能かどうかを判断しやすくなりました。ViewModelStoreOwnerを必要とする API(viewModel()やNavHostなど)は、ViewModelStoreOwnerが設定されていない場合、引き続き例外をスローします。(Idf39a)
Lifecycle-Viewmodel-Compose バージョン 1.0.0-alpha02
2021 年 2 月 24 日
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
LocalViewModelStoreOwnerにCompositionLocalProviderで使用できるprovides関数が追加され、asProvidableCompositionLocal()API が置き換えられました。(I45d24)
Lifecycle-Viewmodel-Compose バージョン 1.0.0-alpha01
2021 年 2 月 10 日
androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
viewModel()コンポーザブルとLocalViewModelStoreOwnerは、androidx.compose.ui.viewinteropからandroidx.lifecycle.viewmodel.composeパッケージのこのアーティファクトに移動しました。(I7a374)
バージョン 2.3.1
Lifecycle バージョン 2.3.1
2021 年 3 月 24 日
androidx.lifecycle:lifecycle-*:2.3.1 がリリースされました。バージョン 2.3.1 に含まれる commit については、こちらをご覧ください。
バグの修正
NonNullableMutableLiveDatalint ルールで、null 許容が異なるフィールド変数を適切に区別できるようになりました。(b/169249668)
バージョン 2.3.0
バージョン 2.3.0
2021 年 2 月 10 日
androidx.lifecycle:lifecycle-*:2.3.0 がリリースされました。バージョン 2.3.0 に含まれる commit については、こちらをご覧ください。
2.2.0 以降の主な変更
SavedStateHandle非 Parcelable クラスのサポート: 指定されたキーのsetSavedStateProvider()を呼び出せるようにすることで、SavedStateHandleが遅延シリアル化をサポートするようになりました。これにより、SavedStateHandleがその状態を保存するよう求められたときにsaveState()へのコールバックを取得するSavedStateProviderを提供します。非 Parcelable クラスを保存するをご覧ください。- Lifecycle Behavior Enforcement:
- LifecycleRegistry は最終状態として
DESTROYEDを適用するようになりました。 LifecycleRegistryは、そのメソッドがメインスレッドで呼び出されることを確認するようになりました。これは、アクティビティやフラグメントなどのライフサイクルでは常に必須でしたが、メインスレッド以外のスレッドからオブザーバーを追加すると、実行時にクラッシュをキャッチすることが困難になっていました。独自のコンポーネントが所有するLifecycleRegistryオブジェクトでは、LifecycleRegistry.createUnsafe(...)を使用して明示的にチェックをオプトアウトできますが、その場合、このLifecycleRegistryが別のスレッドからアクセスされたときに適切な同期が行われることを保証する必要があります。
- LifecycleRegistry は最終状態として
- Lifecycle State と Event Helpers:
Stateと移行方向に応じてEventを生成するために、downFrom(State)、downTo(State)、upFrom(State)、upTo(State)の静的ヘルパー メソッドをLifecycle.Eventに追加しました。Lifecycle がEventの後で直接移行するStateを提供するgetTargetState()メソッドを追加しました。 withStateAtLeast:Lifecycle.withStateAtLeastAPI を追加しました。これらの API は、ライフサイクルの状態を待機し、状態が変化した時点でコードの非停止ブロックを同期的に実行して、その結果により再開します。これらの API は、停止コードの実行を許可せず、カスタム ディスパッチャを使用しない点で、既存のwhen*メソッドと異なります。(aosp/1326081)ViewTreeAPI: 新しいViewTreeLifecycleOwner.get(View)API とViewTreeViewModelStoreOwner.get(View)API を使用すると、それぞれViewインスタンスを指定して、含まれているLifecycleOwnerとViewModelStoreOwnerをそれぞれ取得できます。これを正しく入力するには、Activity1.2.0、Fragment1.3.0、AppCompat 1.3.0-alpha01 以降にアップグレードする必要があります。findViewTreeLifecycleOwnerとfindViewTreeViewModelStoreOwnerの Kotlin 拡張機能は、lifecycle-runtime-ktxとlifecycle-viewmodel-ktxでそれぞれ利用できます。LiveData.observe()Kotlin 拡張機能のサポート終了: ラムダ構文を使用するために必要なLiveData.observe()Kotlin 拡張機能のサポートが終了しました(Kotlin 1.4 を使用する際は不要となるため)。
バージョン 2.3.0-rc01
2020 年 12 月 16 日
androidx.lifecycle:lifecycle-*:2.3.0-rc01 がリリースされました。バージョン 2.3.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
SavedStateHandleのkeys()メソッドについて、状態の保存前と保存後で整合性が保たれるようになりました。set()とgetLiveData()で使用されるキーに加えて、これまでsetSavedStateProvider()で使用されていたキーが含まれるようになりました。(aosp/1517919、b/174713653)
外部からの協力
- ライフサイクル対応コルーチンを中断する API が、
yield()の呼び出しを適切に処理できるようになりました。Nicklas Ansman Giertz 氏に感謝いたします。(aosp/1430830、b/168777346)
バージョン 2.3.0-beta01
2020 年 10 月 1 日
androidx.lifecycle:lifecycle-*:2.3.0-beta01 がリリースされました。バージョン 2.3.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
- ラムダ構文を使用するために必要な
LiveData.observe()Kotlin 拡張機能のサポートが終了しました(Kotlin 1.4 を使用する際は不要となるため)。(I40d3f)
バグの修正
- Kotlin 1.4 を使用できるように、AndroidX をアップグレードしました。(Id6471、b/165307851、b/165300826)
ドキュメントの変更
- 特定のタイムアウト値の変更に関する詳細が含まれるように、
liveDataビルダーとasLiveData()ドキュメントが更新されました。(aosp/1122324)
バージョン 2.3.0-alpha07
2020 年 8 月 19 日
androidx.lifecycle:lifecycle-*:2.3.0-alpha07 がリリースされました。バージョン 2.3.0-alpha07 に含まれる commit については、こちらをご覧ください。
バグの修正
NullSafeMutableLiveDatalint チェックで発生するクラッシュの問題を修正しました。(aosp/1395367)
バージョン 2.3.0-alpha06
2020 年 7 月 22 日
androidx.lifecycle:lifecycle-*:2.3.0-alpha06 がリリースされました。バージョン 2.3.0-alpha06 に含まれる commit については、こちらをご覧ください。
新機能
Stateと遷移方向に応じてEventを生成するため、downFrom(State)、downTo(State)、upFrom(State)、upTo(State)の静的ヘルパー メソッドをLifecycle.Eventに追加しました。Lifecycle がEventの後で直接移行するStateを提供するgetTargetState()メソッドを追加しました。(I00887)Lifecycle.withStateAtLeastAPI を追加しました。これらの API は、ライフサイクルの状態を待機し、状態が変化した時点でコードの非停止ブロックを同期的に実行して、その結果により再開します。これらの API は、停止コードの実行を許可せず、カスタム ディスパッチャを使用しない点で、既存のwhen*メソッドと異なります。(aosp/1326081)
動作の変更
- LifecycleRegistry は最終状態として
DESTROYEDを適用するようになりました。(I00887) LifecycleRegistryは、そのメソッドがメインスレッドで呼び出されることを確認するようになりました。これは、アクティビティやフラグメントなどのライフサイクルでは常に必須でしたが、メインスレッド以外のスレッドからオブザーバーを追加すると、実行時にクラッシュをキャッチすることが困難になっていました。独自のコンポーネントが所有するLifecycleRegistryオブジェクトでは、LifecycleRegistry.createUnsafe(...)を使用して明示的にチェックをオプトアウトできますが、その場合、このLifecycleRegistryが別のスレッドからアクセスされたときに適切な同期が行われることを保証する必要があります。(Ie7280、b/137392809)
バグの修正
NullSafeMutableLiveDataで発生するクラッシュを解決しました。(b/159987480)lifecycle-livedata-core-ktx(および特にNullSafeMutableLiveData)にバンドルされている lint チェックのObsoleteLintCustomCheckを修正しました。(b/158699265)
バージョン 2.3.0-alpha05
2020 年 6 月 24 日
androidx.lifecycle:lifecycle-*:2.3.0-alpha05 がリリースされました。バージョン 2.3.0-alpha05 に含まれる commit については、こちらをご覧ください。
バグの修正
LiveDataでリエントラントの処理が改善され、onActive()またはonInactive()への呼び出しの重複を防ぐようになりました(b/157840298)。- Android Studio 4.1 Canary 6 以上を使用している場合に Lint チェックが行われない問題を修正しました(aosp/1331903)。
バージョン 2.3.0-alpha04
2020 年 6 月 10 日
androidx.lifecycle:lifecycle-*:2.3.0-alpha04 がリリースされました。バージョン 2.3.0-alpha04 に含まれる commit については、こちらをご覧ください。
バグの修正
NonNullableMutableLiveDatalint チェックで発生するクラッシュを修正しました。(b/157294666)NonNullableMutableLiveDatalint チェックが、非 null 型のパラメータを持つMutableLiveDataにnull値が設定されているケースを大幅にカバーするようになりました。(b/156002218)
バージョン 2.3.0-alpha03
2020 年 5 月 20 日
androidx.lifecycle:lifecycle-*:2.3.0-alpha03 がリリースされました。バージョン 2.3.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- 指定されたキーの
setSavedStateProvider()を呼び出せるようにすることで、SavedStateHandleが遅延シリアル化をサポートするようになりました。SavedStateHandleが状態を保存するよう求められたときにsaveState()へのコールバックを取得するSavedStateProviderを提供します。(b/155106862) - 新しい
ViewTreeViewModelStoreOwner.get(View)API を使用すると、Viewインスタンスを指定して、含まれているViewModelStoreOwnerを取得できます。これを正しく入力するには、Activity1.2.0-alpha05、Fragment1.3.0-alpha05、AppCompat1.3.0-alpha01にアップグレードする必要がありますfindViewModelStoreOwner()Kotlin 拡張機能がlifecycle-viewmodel-ktxに追加されました。(aosp/1295522)
バグの修正
- Lifecycle
2.3.0-alpha01でリリースされたMutableLiveDatalint チェックがlifecycle-livedata-core-ktxアーティファクトと一緒に公開されない問題を修正しました。(b/155323109)
バージョン 2.3.0-alpha02
2020 年 4 月 29 日
androidx.lifecycle:lifecycle-*:2.3.0-alpha02 がリリースされました。バージョン 2.3.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
SavedStateViewModelFactoryを使用することで、null のApplicationをコンストラクタに渡せるようになりました。これにより、Application がすぐに利用できず、AndroidViewModelのサポートが不要な場合のサポートが向上しました。(aosp/1285740)
バグの修正
- API 28 以前のデバイスでのクラス検証エラーを回避することで、コールド スタートのパフォーマンスを改善しました。(aosp/1282118)
バージョン 2.3.0-alpha01
2020 年 3 月 4 日
androidx.lifecycle:lifecycle-*:2.3.0-alpha01 がリリースされました。バージョン 2.3.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
- 新しい
ViewTreeLifecycleOwner.get(View)API を使用すると、Viewインスタンスを指定して、含まれているLifecycleOwnerを取得できます。これを正しく入力するには、Activity1.2.0-alpha01と Fragment1.3.0-alpha01にアップグレードする必要があります。findViewTreeLifecycleOwnerKotlin 拡張機能はlifecycle-runtime-ktxで利用できます。(aosp/1182361、aosp/1182956) - Kotlin で非 null として定義されている
MutableLiveDataにnull値を設定すると警告する、新しい Lint チェックを追加しました。これは、livedata-core-ktxまたはlivedata-ktxアーティファクトを使用する場合に利用できます。(aosp/1154723、aosp/1159092) LifecycleOwnerを実装するTestLifecycleOwnerを提供し、スレッドセーフで変更可能なLifecycleを提供する、新しいlifecycle-runtime-testingアーティファクトを利用できます。(aosp/1242438)
バグの修正
lifecycle-runtimeアーティファクトが一意のパッケージ名を持つようになりました。(aosp/1187196)
バージョン 2.2.0
ViewModel-Savedstate バージョン 2.2.0
2020 年 2 月 5 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 がリリースされました。バージョン 2.2.0 に含まれる commit については、こちらをご覧ください。
Lifecycle ViewModel SavedState は他の Lifecycle アーティファクトと同じバージョンを共有するようになりました。2.2.0 の動作は 1.0.0 の動作と同じです。
バージョン 2.2.0
2020 年 1 月 22 日
androidx.lifecycle:lifecycle-*:2.2.0 がリリースされました。バージョン 2.2.0 に含まれる commit については、こちらをご覧ください。
2.1.0 以降の重要な変更
- Lifecycle コルーチンの統合: 新しい
lifecycle-runtime-ktxアーティファクトにより、Lifecycle コルーチンと Kotlin コルーチンとの統合機能が追加されています。また、コルーチンを活用できるようにlifecycle-livedata-ktxが拡張されました。詳細については、アーキテクチャ コンポーネントで Kotlin コルーチンを使用するをご覧ください。 ViewModelProviders.of()のサポート終了:ViewModelProviders.of()のサポートが終了しました。Fragment1.2.0を使用する場合、FragmentまたはFragmentActivityを新しいViewModelProvider(ViewModelStoreOwner)コンストラクタに渡すと、同じ機能を実現できます。lifecycle-extensionsアーティファクトのサポート終了: 上記ViewModelProviders.of()のサポート終了をもって、このリリースのlifecycle-extensionsで最後に残った API がサポート終了となったため、このアーティファクトは完全にサポート終了とみなされます。今後リリースされる2.3.0にlifecycle-extensionsが含まれる予定はないため、lifecycle-extensionsではなく、必要な Lifecycle アーティファクト(たとえば、LifecycleServiceを使用している場合はlifecycle-service、ProcessLifecycleOwnerを使用している場合はlifecycle-process)を利用することを強くおすすめします。- Gradle Incremental Annotation Processor: Lifecycle のアノテーション プロセッサはデフォルトでインクリメンタルです。
アプリが Java 8 プログラミング言語で作成されている場合は
DefautLifecycleObserverを、Java 7 の場合はLifecycleEventObserverを使用できます。
バージョン 2.2.0-rc03
2019 年 12 月 4 日
androidx.lifecycle:lifecycle-*:2.2.0-rc03 がリリースされました。バージョン 2.2.0-rc03 に含まれる commit については、こちらをご覧ください。
バグの修正
- モックされた
ViewModelがViewModelStoreに保存され、後でデフォルト ファクトリでクエリが実行されたときに発生するエラーを修正しました。 launchWhenCreatedおよび同様のメソッドでDispatchers.Main.immediateが対応するライフサイクル イベント中に同期的に呼び出されるように修正しています。(aosp/1156203)
外部寄与
- 本修正に寄与した AndersJärleberg 氏に感謝いたします。(aosp/1156203)
- インライン実行の実装に対するレビューを実施した JetBrains 社の Vsevolod Tolstopyatov 氏に感謝いたします。
依存関係の変更
- Lifecycle Extensions が Fragment
1.2.0-rc03に依存するようになりました。
バージョン 2.2.0-rc02
2019 年 11 月 7 日
androidx.lifecycle:lifecycle-*:2.2.0-rc02 がリリースされました。バージョン 2.2.0-rc02 に含まれる commit については、こちらをご覧ください。
バグの修正
- ライブラリの ProGuard セットアップのバグを修正しました。このライブラリは、ターゲット API が 29 未満の場合、API 28 以降を搭載しているデバイスに影響します。(b/142778206)
バージョン 2.2.0-rc01
2019 年 10 月 23 日
androidx.lifecycle:lifecycle-*:2.2.0-rc01 がリリースされました。バージョン 2.2.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
Dispatchers.Main.immediateの代わりにDispatchers.Mainを使用するため、launchWhenCreatedと関連メソッドが関連するライフサイクル メソッドより 1 フレーム遅れて実行される問題を修正しました。(aosp/1145596)
外部寄与
- 本修正に寄与した Nicklas Ansman 氏に感謝いたします。(aosp/1145596)
バージョン 2.2.0-beta01
2019 年 10 月 9 日
androidx.lifecycle:lifecycle-*:2.2.0-beta01 がリリースされました。バージョン 2.2.0-beta01 に含まれる commit については、こちらをご覧ください。
バグの修正
ProcessLifecycleOwnerの順序で Lifecycle 2.2.0-alpha05 に生じる回帰と、アクティビティのLifecycleOwnerが Android 10 デバイスで開始および再開に移行する問題を修正しました。(aosp/1128132)- Lifecycle
2.2.0-alpha05で生じる回帰を修正しました。バージョン2.0.0や2.1.0のlifecycle-processを使用するとNullPointerExceptionが発生していました。(b/141536990)
バージョン 2.2.0-alpha05
2019 年 9 月 18 日
androidx.lifecycle:lifecycle-*:2.2.0-alpha05 がリリースされました。バージョン 2.2.0-alpha05 に含まれる commit については、こちらをご覧ください。
バグの修正
- コルーチンのライブデータ ビルダーの競合状態を修正しました。(b/140249349)
バージョン 2.2.0-alpha04
2019 年 9 月 5 日
androidx.lifecycle:lifecycle-*:2.2.0-alpha04 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
lifecycleScope、whenCreated、whenStarted、whenResumed、viewModelScope、またliveDataの基となる実装では、Dispatchers.MainではなくDispatchers.Main.immediateが使用されるようになりました。(b/139740492)
外部寄与
Dispatchers.Main.immediateへの移行に寄与した Nicklas Ansman 氏に感謝いたします。(aosp/1106073)
バージョン 2.2.0-alpha03
2019 年 8 月 7 日
androidx.lifecycle:lifecycle-*:2.2.0-alpha03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
ViewModelStoreOwnerの実装では、オプションでHasDefaultViewModelProviderFactoryを実装して、デフォルトのViewModelProvider.Factoryを提供できるようになりました。これは Activity1.1.0-alpha02、Fragment1.2.0-alpha02、Navigation2.2.0-alpha01に対して行われました。(aosp/1092370、b/135716331)
API の変更
ViewModelProviders.of()が非推奨になりました。FragmentまたはFragmentActivityを新しいViewModelProvider(ViewModelStoreOwner)コンストラクタに渡すと、同じ機能を実現できます。(aosp/1009889)
バージョン 2.2.0-alpha02
2019 年 7 月 2 日
androidx.lifecycle:*:2.2.0-alpha02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
API の変更
LiveDataScope.initialValueを、liveDataブロックの現在の出力値をトラックするLiveDataScope.latestValueに置き換えました。- タイプ
Durationとしてtimeoutパラメータを受け取るliveDataビルダーに新しいオーバーロードを追加しました。
Version 2.2.0-alpha01
2019 年 5 月 7 日
androidx.lifecycle:*:2.2.0-alpha01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
- このリリースでは、Lifecycle と LiveData の Kotlin コルーチンのサポートを追加する新機能が追加されています。 詳細なドキュメントについては、こちらをご覧ください。
ViewModel-SavedState バージョン 1.0.0
バージョン 1.0.0
2020 年 1 月 22 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください。
1.0.0 の重要な機能
- 新しい SavedStateHandle クラスが追加されました。これにより、
ViewModelクラスが保存済み状態にアクセスして簡単に扱うことができるようになります。このオブジェクトはViewModelクラスのコンストラクタで受け取ることができ、Fragment によってデフォルトで提供されるファクトリと AppCompatActivity がSavedStateHandleを自動的に追加します。 - AbstractSavedStateViewModelFactory が追加されました。
ViewModelのカスタム ファクトリを作成し、これらのファクトリがSavedStateHandleにアクセスできるようにします。
ViewModel-SavedState バージョン 1.0.0-rc03
2019 年 12 月 4 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 がリリースされました。バージョン 1.0.0-rc03 に含まれる commit については、こちらをご覧ください。
依存関係の変更
- Lifecycle ViewModel SavedState は Lifecycle
2.2.0-rc03に依存するようになりました。
ViewModel-Savedstate バージョン 1.0.0-rc02
2019 年 11 月 7 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 がリリースされました。バージョン 1.0.0-rc02 に含まれる commit については、こちらをご覧ください。
依存関係の変更
- Lifecycle
2.2.0-rc02に依存するようになりました。
ViewModel-SavedState バージョン 1.0.0-rc01
2019 年 10 月 23 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 がリリースされました。1.0.0-beta01 からの変更はありません。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください。
ViewModel-Savedstate バージョン 1.0.0-beta01
2019 年 10 月 9 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。
バグの修正
Activity.onActivityResult()で SavedState ViewModel に初めてアクセスするとIllegalStateExceptionが発生する問題を修正しました。(b/139093676)AbstractSavedStateViewModelFactoryの使用時のIllegalStateExceptionを修正しました。(b/141225984)
ViewModel-SavedState バージョン 1.0.0-alpha05
2019 年 9 月 18 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください。
API の変更
SavedStateViewModelFactoryはAbstractSavedStateViewModelFactoryを拡張することはなく、SavedStateHandleは ViewModel が必要とする場合にのみ作成されます。(aosp/1113593)
ViewModel-SavedState バージョン 1.0.0-alpha03
2019 年 8 月 7 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
互換性を破る変更
lifecycle-viewmodel-savedstateがfragmentに依存しなくなり、関連するSavedStateViewModelFactory(Fragment)とSavedStateViewModelFactory(FragmentActivity)のコンストラクタが削除されました。代わりにSavedStateViewModelFactoryが、Activity1.1.0-alpha02、Fragment1.2.0-alpha02、Navigation2.2.0-alpha01のデフォルト ファクトリになりました。(b/135716331)
ViewModel-SavedState バージョン 1.0.0-alpha02
2019 年 7 月 2 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
- デフォルト値を受け入れる
SavedStateHandle.getLiveData()オーバーロードを追加しました。
API の変更
SavedStateVMFactoryの名前がSavedStateViewModelFactoryに変更されました。AbstractSavedStateVMFactoryの名前がAbstractSavedStateViewModelFactoryに変更されました。
ViewModel-Savedstate バージョン 1.0.0-alpha01
2019 年 3 月 13 日
androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 がリリースされました。この初回リリースの完全な commit ログについては、こちらをご覧ください。
新機能
ViewModelsで savedstate を使用できるようになりました。そのためには、新しく導入されたビューモデルのファクトリSavedStateVMFactoryを使用し、ViewModel にはパラメータとしてSavedStateHandleオブジェクトを受け取るコンストラクタが必要です。
バージョン 2.1.0
2.0.0 以降の重要な変更
- ライフサイクル イベントのストリームが必要な場合のために、
LifecycleEventObserverを追加しました。非表示のGenericLifecycleObserverクラスではなく、公開 API です。 LiveData.observeメソッドとTransformations.*メソッドの ktx 拡張機能を追加しました。- ソースの
LiveData値が変更されるまで値を出力しない新しい LiveData オブジェクトを作成する、Transformations.distinctUntilChangedを追加しました。 - 拡張プロパティ
ViewModel.viewModelScopeを追加することで、ViewModels にコルーチンのサポートを追加しました。
バージョン 2.1.0
2019 年 9 月 5 日
androidx.lifecycle:lifecycle-*:2.1.0 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
バージョン 2.1.0-rc01
2019 年 7 月 2 日
androidx.lifecycle:*:2.1.0-rc01 がリリースされました。androidx.lifecycle:*:2.1.0-beta01 からの変更はありません。このバージョンに含まれる commit については、こちらをご覧ください。
バージョン 2.1.0-beta01
2019 年 5 月 7 日
androidx.lifecycle:*:2.1.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
新機能
- Lifecycle はベータ版に進みました。変換と観察のための
liveData拡張関数、プロパティ委任によるViewModel初期化など、以前のアルファ版で導入された API は安定しており、変更予定はありません。
バージョン 2.1.0-alpha04
2019 年 4 月 3 日
androidx.lifecycle:*:2.1.0-alpha04 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。
API の変更
- 互換性を破る変更:
by viewModels()とby activityViewModels()の基になる API は、ViewModelStoreOwnerだけでなくViewModelStoreを直接サポートするように変更されました。(aosp/932932)
バージョン 2.1.0-alpha03
2019 年 3 月 13 日
androidx.lifecycle:*:2.1.0-alpha03 がリリースされました。このバージョンに含まれる commit の完全なリストについては、こちらをご覧ください。
API の変更
ViewModelProvider.KeyedFactoryが削除されました。ViewModelProvider.Factoryに続く 2 番目のインターフェースでしたが、Kotlin のby viewmodels {}のプロパティ委任の新機能と十分にコンポーズしませんでした。(aosp/914133)
バージョン 2.1.0-alpha02
2019 年 1 月 30 日
androidx.lifecycle 2.1.0-alpha02 がリリースされました。
API の変更
LifecycleRegistryにsetCurrentState()メソッドが追加されました。このメソッドは、サポートが終了したsetState()メソッドを置き換えるものです。(aosp/880715)
バグの修正
- 含まれている
ViewModelStoreがクリアされるとモックのViewModelインスタンスがクラッシュするという問題を修正しました。(b/122273087)
バージョン 2.1.0-alpha01
2018 年 12 月 17 日
androidx.lifecycle 2.1.0-alpha01 がリリースされました。
新機能
- ライフサイクル イベントのストリームが必要な場合のために、
LifecycleEventObserverを追加しました。非表示のGenericLifecycleObserverクラスではなく、公開 API です。 LiveData.observeメソッドとTransformations.*メソッドの ktx 拡張機能を追加しました。- メソッド
Transformations.distinctUntilChangedが追加されました。ソースの LiveData 値が変更されるまで値を出力しない新しいLiveDataオブジェクトを作成します。 - ViewModels のコルーチンのサポート: 拡張プロパティ
ViewModel.viewModelScopeが追加されました。 ViewModelProvider.KeyedFactoryを追加しました。createメソッドでkeyとClassを受け取る ViewModels のファクトリです。
バージョン 2.0.0
バージョン 2.0.0
2018 年 9 月 21 日
Lifecycle 2.0.0 のリリースでは、ViewModel に関する 2.0.0-rc01 のバグが 1 件修正されています。
バグの修正
- コンストラクタを誤って削除する ViewModel ProGuard ルールを修正しました。b/112230489
バージョン 2.0.0-beta01
2018 年 7 月 2 日
バグの修正
- 実装のみを保持し、サブインターフェースは保持しないように LifecycleObserver ProGuard ルールを修正しました。b/71389427
- 難読化と圧縮を許可するように ViewModel ProGuard ルールを修正しました。
AndroidX 以前のバージョン
AndroidX 以前のバージョンの Lifecycle では、次の依存関係を含めます。
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
バージョン 1.1.1
2018 年 3 月 21 日
1 つの小規模な変更のみ: android.arch.core.util.Function が arch:runtime から arch:common に移動されました。これにより、(下記の paging:common のような)ランタイムの依存関係がなくてもこのメソッドを使用できるようになりました。
lifecycle:common は lifecycle:runtime の依存関係であるため、この変更による lifecycle:runtime への直接的な影響はありません。影響を受けるのは、Paging と同様に、lifecycle:common に直接依存するモジュールだけです。
バージョン 1.1.0
2018 年 1 月 22 日
パッケージの変更
以下の新しい、極めて小さな依存関係を利用できるようになりました。
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
API の変更
- サポートが終了した
LifecycleActivityとLifecycleFragmentは削除されました。FragmentActivity、AppCompatActivityを使用するか、Fragmentをサポートしてください。 @NonNullアノテーションがViewModelProvidersとViewModelStoresに追加されました。ViewModelProvidersコンストラクタのサポートが終了しました。その静的メソッドを直接使用してください。ViewModelProviders.DefaultFactoryのサポートが終了しました。ViewModelProvider.AndroidViewModelFactoryを使用してください。- 静的な
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)メソッドが追加され、ViewModelインスタンスやAndroidViewModelインスタンスの作成に適した静的なFactoryを取得できるようになりました。