Lifecycle  

您所在的位置:网站首页 androidx混淆 Lifecycle  

Lifecycle  

2023-04-26 08:02| 来源: 网络整理| 查看: 265

Lifecycle 用户指南  代码示例  Codelab API 参考文档 androidx.lifecycle 生命周期感知型组件可执行操作来响应另一个组件(如 activity 和 fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。

下表列出了 androidx.lifecycle 组中的所有工件。

工件 稳定版 候选版 Beta 版 Alpha 版 lifecycle-* 2.5.1 2.6.0-rc01 - - lifecycle-viewmodel-compose 2.5.1 2.6.0-rc01 - - 此库的最后更新时间:2023 年 2 月 22 日 声明依赖项

如需为 Lifecycle 添加依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库。

在应用或模块的 build.gradle 文件中添加所需制品的依赖项:

lifecycle-extensions 中的 API 已废弃。您可以改而为您需要的具体 Lifecycle 工件添加依赖项。 Kotlin Groovy dependencies { def lifecycle_version = "2.5.1" def arch_version = "2.1.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" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // 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.5.1" val arch_version = "2.1.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") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // 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.5.1" def arch_version = "2.1.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.5.1" val arch_version = "2.1.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") }

如需详细了解依赖项,请参阅添加 build 依赖项。

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档。

版本 2.6 版本 2.6.0-rc01

2023 年 2 月 22 日

发布了 androidx.lifecycle:lifecycle-*:2.6.0-rc01。版本 2.6.0-rc01 中包含这些提交内容。

bug 修复

如果前面的 LiveData 设置了值,则 LiveData.distinctUntilChanged() 扩展现在会设置返回的 LiveData 的 value。这不会改变观察行为 - 仅当您开始观察从 distinctUntilChanged() 返回的 LiveData 时,来自来源 LiveData 的更新值才会仍然适用。(Ib482f) 版本 2.6.0-beta01

2023 年 2 月 8 日

发布了 androidx.lifecycle:lifecycle-*:2.6.0-beta01。版本 2.6.0-beta01 中包含这些提交内容。

Kotlin 转换

LifecycleOwner 现在用 Kotlin 编写。对于使用 Kotlin 编写的类,这项变更与源代码不兼容。它们现在必须替换 lifecycle 属性,而不是实现之前的 getLifecycle() 函数。(I75b4b、b/240298691) ViewModelStoreOwner 现在使用的是 Kotlin。对于使用 Kotlin 编写的类,这项变更与源代码不兼容。它们现在必须替换 viewModelStore 属性,而不是实现之前的 getViewModelStore() 函数。(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 中包含这些提交内容。

Kotlin 转换

Transformations 现在用 Kotlin 编写。对于使用 Kotlin 直接采用 Transformations.map 等语法编写的类,这项变更与源代码不兼容。现在,Kotlin 代码必须使用之前仅在使用 lifecycle-livedata-ktx 时可用的 Kotlin 扩展方法语法。使用 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 中包含这些提交内容。

新功能

LiveData 现在包含一个新的 isInitialized 属性,用于指明是否曾为 LiveData 设置了显式值,从而使得您能够区分返回 null 的 liveData.value,因为之前未曾设置过任何值或未曾有过显式 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 编写的代码,这项变更与源代码不兼容(如果您尚未使用 Kotlin 扩展方法 API)。(I2b1b9、I95d22、b/240298691) DefaultLifecycleObserver、LifecycleEventObserver、Lifecycle、LifecycleRegistry、LifecycleObserver 和 ViewModelStore 现在用 Kotlin 编写(Iadffd、I60034、I8c52c、I9593d、I01fe1、I59a23、b/240298691)

bug 修复

使用不正确的类类型调用 get() 时,SavedStateHandle 不会再因出现 ClassCastException 而崩溃。(I6ae7c) 版本 2.6.0-alpha03

2022 年 10 月 24 日

发布了 androidx.lifecycle:lifecycle-*:2.6.0-alpha03。版本 2.6.0-alpha03 中包含这些提交内容。

bug 修复

修复了不同生命周期模块之间的约束条件无法按预期运行的问题。(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 中包含这些提交内容。

API 变更

现在,MediatorLiveData 包含一个用于设置初始值的构造函数。(Ib6cc5、b/151244085)

bug 修复

现在,Lifecycle 工件包含相关约束条件,以确保所有相互依赖的 Lifecycle 工件使用同一版本,并且系统会在某个依赖项升级后自动升级其他依赖项。b/242871265 现在,FlowLiveData.asFlow() 会创建 callbackFlow,而不是使用自己的 Channel 实现来确保线程安全和上下文保留性。(I4a8b2、b/200596935) 现在,FlowLiveData 的 asLiveData 函数在创建新的 LiveData 对象时会保留 StateFlow 的初始值。(I3f530、b/157380488) 从 Lifecycle 2.5.1 起:现在,将有状态的构造函数与 Lifecycle 2.4 及更高版本结合使用时,AndroidViewModelFactory 的自定义实现可以正确调用 create(modelClass) 函数(I5b315、b/238011621) 版本 2.6.0-alpha01

2022 年 6 月 29 日

发布了 androidx.lifecycle:lifecycle-*:2.6.0-alpha01。版本 2.6.0-alpha01 中包含这些提交内容。

新功能

在 collectAsStateWithLifecycle 的 StateFlow 和 Flow 上添加了一个新的扩展,该扩展从数据流中收集数据,并以可感知生命周期的方式将其最新值表示为 Compose 状态。当生命周期至少处于某个 Lifecycle.State 时,系统会收集数据流,并将新发出的内容设为 State 的值。当生命周期状态低于该 Lifecycle.State 时,数据流收集会停止,且 State 的值不会更新。(I1856e、b/230557927) 版本 2.5 版本 2.5.1

2022 年 7 月 27 日

发布了 androidx.lifecycle:lifecycle-*:2.5.1。版本 2.5.1 中包含这些提交内容。

bug 修复

将有状态的 AndroidViewModelFactory 构造函数与 Lifecycle 2.4 及更高版本结合使用时,AndroidViewModelFactory 的自定义实现现在可以正确调用 create(modelClass) 函数。(I5b315、b/238011621) 版本 2.5.0

2022 年 6 月 29 日

发布了 androidx.lifecycle:lifecycle-*:2.5.0。版本 2.5.0 中包含这些提交内容。

自 2.4.0 以来的重要变更

SavedStateHandle 现在提供了一个 getStateFlow() API,该 API 会返回用于监控值更改的 Kotlin StateFlow,可代替 LiveData 使用。

ViewModel CreationExtras - 编写自定义 ViewModelProvider.Factory 时,不再需要扩展 AndroidViewModelFactory 或 AbstractSavedStateViewModelFactory 即可分别访问 Application 或 SavedStateHandle。现在会通过新的 create 过载 [create(Class, CreationExtras)] 将这些字段作为 CreationExtras 提供给每个 ViewModelProvider.Factory 子类。使用 Activity 1.5.0 和 Fragment 1.5.0 时,您的 Activity 或 Fragment 会自动提供这些 extra。

class CustomFactory : ViewModelProvider.Factory { override fun create(modelClass: Class, 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 现在提供了一个 viewModelFactory Kotlin DSL,它允许您以一个或多个 lambda 初始化程序的形式定义 ViewModelProvider.Factory(您的自定义工厂支持的每个特定 ViewModel 类分别对应一个初始化程序,并使用 CreationExtras 作为主要数据源)。

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,该 API 支持使用 lambda 工厂创建 ViewModel 实例,而无需创建自定义 ViewModelProvider.Factory。

// 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 Saver 集成 - lifecycle-viewmodel-compose 制品现在会在 SavedStateHandle.saveable 中包含新的实验性 API,这些 API 支持 rememberSaveable,例如由 ViewModel 的 SavedStateHandle 提供支持的行为。

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 添加一个或多个 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() } }

然后,可以在 ViewModel 构造函数中使用它,同时保持与 viewModelScope 相同的生命周期:

class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }

行为变更

现在,无论 Lifecycle 是否附有观察器,尝试将 Lifecycle.State 从 INITIALIZED 变为 DESTROYED 时始终会抛出 IllegalStateException。 现在,LifecycleRegistry 会在观察器达到 DESTROYED 状态时对其进行清除。 版本 2.5.0-rc02

2022 年 6 月 15 日

发布了 androidx.lifecycle:lifecycle-*:2.5.0-rc02。版本 2.5.0-rc02 中包含这些提交内容。

bug 修复

将先前版本的 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 中包含这些提交内容。

bug 修复

在被传递了 null 来源而不是将 null 来源传播到观察器时,MediatorLiveData.addSource() 现在会抛出 NullPointerException。(Ibd0fb、b/123085232) 版本 2.5.0-beta01

2022 年 4 月 20 日

发布了 androidx.lifecycle:lifecycle-*:2.5.0-beta01。版本 2.5.0-beta01 中包含这些提交内容。

API 变更

添加了 SavedStateHandle.saveable 属性委托,使用属性名称作为键,以便将状态保存到 SavedStateHandle 中(I8bb86、b/225014345)

bug 修复

修复了以下问题:在使用多个返回堆栈时,将非主要底部导航标签页中的一个 NavHost 嵌套在另一个 NavHost 内会导致 IllegalStateException。(I11bd5、b/228865698) 版本 2.5.0-alpha06

2022 年 4 月 6 日

发布了 androidx.lifecycle:lifecycle-*:2.5.0-alpha06。版本 2.5.0-alpha06 中包含这些提交内容。

新功能

向 SavedStateHandle.saveable 添加了实验性 MutableState 过载,以与 rememberSaveable 保持一致(I38cfe、b/224565154)

API 变更

CreationExtras 现在是抽象的,而不是密封的。(Ib8a7a)

bug 修复

修复了由 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 中包含这些提交内容。

新功能

lifecycle-viewmodel-compose 模块现在提供 SavedStateHandleSaver,这是一种实验性 API,可确保 SavedStateHandle 中的值与 rememberSaveable 使用的相同已保存实例状态正确集成。(Ia88b7、b/195689777)

API 变更

修复了与 Java 中 Lifecycle 2.3 及更高版本 Lifecycle 的兼容性问题。(I52c8a、b/219545060)

bug 修复

SavedStateViewFactory 现在支持使用 CreationExtras,即使其通过 SavedStateRegistryOwner 进行初始化也不受影响。如果提供 extra,则会忽略初始化的参数。(I6c43b、b/224844583) 版本 2.5.0-alpha04

2022 年 3 月 9 日

发布了 androidx.lifecycle:lifecycle-*:2.5.0-alpha04。版本 2.5.0-alpha04 中包含这些提交内容。

API 变更

SavedStateHandle 现在提供了一个 getStateFlow() API,该 API 会返回用于监控值更改的 Kotlin StateFlow,可代替 LiveData 使用。(Iad3ab、b/178037961) 版本 2.5.0-alpha03

2022 年 2 月 23 日

发布了 androidx.lifecycle:lifecycle-*:2.5.0-alpha03。版本 2.5.0-alpha03 中包含这些提交内容

新功能

添加了 addCloseable() API 和新的构造函数重载,使您能够向 ViewModel 添加一个或多个 Closeable 对象;这类对象在 ViewModel 被清除时就会关闭,而无需在 onCleared() 中执行任何手动操作。(I55ea0) lifecycle-viewmodel 现在提供了一个 InitializerViewModelFactory,以允许添加用于处理特定 ViewModel 类的 lambda,并使用 CreationExtras 作为主要数据源。(If58fc、b/216687549) lifecycle-viewmodel-compose 现在提供了一个 viewModel() API,该 API 支持使用 lambda 工厂创建 ViewModel 实例,而无需创建自定义 ViewModelProvider.Factory。(I97fbb、b/216688927)

API 变更

现在您可以通过 lifecycle-viewmodel-compose 使用 CreationExtras 创建 ViewModel。(I08887、b/216688927)

行为变更

现在,无论 Lifecycle 是否附有观察器,尝试将 Lifecycle.State 从 INITIALIZED 转换为 DESTROYED 时始终会抛出 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 中包含这些提交内容。

API 变更

SavedStateHandle 和 SavedStateViewModelFactory 已转换为 Kotlin。此项更改提升了这两个类中的泛型的可为 null 性。 (Ib6ce2、b/216168263、I9647a、b/177667711) LiveData switchMap 函数参数现在可以具有可为 null 的输出。(I40396、b/132923666) LiveData -ktx 扩展现在使用 @CheckResult 添加注释,以便在调用这些函数时强制使用相应结果。(Ia0f05、b/207325134)

行为变更

现在,如果指定的键没有值,SavedStateHandle 可正确存储 defaultValue。(I1c6ce、b/178510877)

bug 修复

从 Lifecycle 2.4.1 开始:更新了 lifecycle-process 以依赖于 Startup 1.1.1,进而确保用于阻止 ProcessLifecycleInitializer 抛出 StartupException 的修复程序默认可用。(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 中包含这些提交内容。

ViewModel CreationExtras

在此版本中,我们为重构 ViewModel 的构造方式奠定了基础。我们正在从使用 ViewModelProvider.Factory 的一组固定子类(每个子类均会添加额外的功能,通过 AndroidViewModelFactory 允许使用 Application 构造函数参数,通过 SavedStateViewModelFactory 和 AbstractSavedStateViewModelFactory 允许使用 SavedStateHandle 构造函数参数,等等),转向使用一组依赖于新概念 CreationExtras 的无状态工厂。(Ia7343、b/188691010、b/188541057)

进行此更改后,ViewModelProvider 不会再直接调用 ViewModelProvider.Factory 的上一个 create(Class) 方法,而是会调用 create 的新过载:create(Class, 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 时,默认提供这些 extra。如果使用这些库的早期版本,CreationExtras 将为空:已重写 ViewModelProvider.Factory 的所有现有子类,以支持这些库的早期版本使用的旧创建路径和将来要使用的 CreationExtras 路径。

您可以使用这些 CreationExtras 构造 ViewModelProvider.Factory,将您需要的信息传递给每个 ViewModel,而无需依赖于 Factory 子类的严格层次结构:

class CustomFactory : ViewModelProvider.Factory { override fun create(modelClass: Class, 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 扩展函数,仅为需要 SavedStateHandle 的那个 ViewModel 构造一个 SavedStateHandle。(Ia6654、b/188541057)

可以通过在 ComponentActivity 或 Fragment 中替换 getDefaultViewModelCreationExtras() 来提供自定义 CreationExtras,从而将这些 extra 以内置辅助注入的形式提供给您的自定义 ViewModelProvider.Factory 使用。直接与 ViewModelProvider 一起使用或使用 by viewModels() 和 by activityViewModels() Kotlin 属性扩展项时,这些 extra 将自动可供自定义 Factory 使用。(I79f2b、b/207012584、b/207012585、b/207012490)

bug 修复

修复了以下问题:即使已专门从 SavedStateHandle 中移除,提供给 SavedStateHandle 的默认值也会在进程终止和重新创建后重新出现。因此,SavedStateHandle 不再将默认值和恢复的值合并在一起,而是仅使用恢复的值作为可信来源。(I53a4b) 版本 2.4 版本 2.4.1

2022 年 2 月 9 日

发布了 androidx.lifecycle:lifecycle-*:2.4.1。版本 2.4.1 中包含这些提交内容。

bug 修复

从 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 中包含这些提交内容。

自 2.3.0 以来的重要变更

废弃了 @OnLifecycleEvent。应改用 LifecycleEventObserver 或 DefaultLifecycleObserver。 添加了 androidx.lifecycle:lifecycle-viewmodel-compose 库。它提供了 viewModel() 可组合项和 LocalViewModelStoreOwner。 对源代码的重大变更:ViewModelProvider 已使用 Kotlin 重写。ViewModelProvider.Factory.create 方法不再允许使用可为 null 的泛型。 向 androidx.lifecycle:lifecycle-runtime-ktx 添加了新的协程 API: Lifecycle.repeatOnLifecycle - 当 Lifecycle 至少处于某个状态时,此 API 会在协程中执行代码块。当 Lifecycle 进入和退出目标状态时,该代码块将取消并重新启动; Flow.flowWithLifecycle - 当 Lifecycle 至少处于某个状态时,此 API 会发出来自上游 flow 的值。 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 完成的。

如果您使用的是 tools:node="remove"(即过去用于初始化进程生命周期的 ContentProvider),那么您需要改为执行以下操作。

(或)

版本 2.4.0-rc01

2021 年 9 月 29 日

发布了 androidx.lifecycle:lifecycle-*:2.4.0-rc01,该版本与 Lifecycle 2.4.0-beta01 相比没有变化。版本 2.4.0-rc01 中包含这些提交内容。

版本 2.4.0-beta01

2021 年 9 月 15 日

发布了 androidx.lifecycle:lifecycle-*:2.4.0-beta01。版本 2.4.0-beta01 中包含这些提交内容。

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)

外部贡献

感谢 dmitrilc 修正了 ViewModel 文档中的一个类型!(#221) 版本 2.4.0-alpha03

2021 年 8 月 4 日

发布了 androidx.lifecycle:lifecycle-*:2.4.0-alpha03。版本 2.4.0-alpha03 中包含这些提交内容。

API 变更

对源代码的重大变更:ViewModelProvider 已使用 Kotlin 重写。 ViewModelProvider.Factory.create 方法不再允许使用可为 null 的泛型。(I9b9f6)

行为变更

现在,在重复执行时,Lifecycle.repeatOnLifecycle: block 始终会按顺序调用。(Ibab33)

外部贡献

感谢 chao2zhang 修复 repeatOnLifecycle 文档中的代码段。#205。 版本 2.4.0-alpha02

2021 年 6 月 16 日

发布了 androidx.lifecycle:lifecycle-*:2.4.0-alpha02。版本 2.4.0-alpha02 中包含这些提交内容。

新功能

向 lifecycle-runtime-ktx 添加了新的 RepeatOnLifecycleWrongUsage lint 检查,可检测何时在 onStart() 或 onResume() 中错误地使用了 repeateOnLifecycle。(706078、b/187887400)

API 变更

移除了 LifecycleOwner.addRepeatingJob API,改为使用 Lifecycle.repeatOnLifecycle,后者遵循结构化并发的要求,并且易于推断。(I4a3a8) 将 ProcessLifecycleInitializer 设为公开,以便其他 androidx.startup.Initializer 可将其用作依赖项。(I94c31)

bug 修复

修复了当字段包含修饰符时 NullSafeMutableLiveData lint 检查出现的问题。(#147、b/183696616) 修复了当使用泛型时 NullSafeMutableLiveData lint 检查出现的另一个问题。(#161、b/184830263)

外部贡献

感谢 maxsav 改进了 NullSafeMutableLiveData lint 检查。(#147、b/183696616) 感谢 kozaxinan 改进了 NullSafeMutableLiveData lint 检查。(#161、b/184830263) 版本 2.4.0-alpha01

2021 年 3 月 24 日

发布了 androidx.lifecycle:lifecycle-*:2.4.0-alpha01。版本 2.4.0-alpha01 中包含这些提交内容。

行为变更

现在,lifecycle-process 使用 androidx.startup 来初始化 ProcessLifecycleOwner。

之前,此操作是由 androidx.lifecycle.ProcessLifecycleOwnerInitializer 完成的。

如果您使用的是 tools:node="remove"(即过去用于初始化进程生命周期的 ContentProvider),那么您需要改为执行以下操作。

(或)

API 变更

添加了 Flow.flowWithLifecycle API,当生命周期至少处于使用 Lifecycle.repeatOnLifecycle API 的某个状态时,此 API 会发出来自上游 flow 的值。这是 LifecycleOwner.addRepeatinJob API(也是新增的 API)的替代方案。(I0f4cd)

bug 修复

从 Lifecycle 2.3.1 开始:现在,NonNullableMutableLiveData lint 规则可以正确区分具有不同的可为 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 中包含这些提交内容。

重要 API 更改

viewModel() 现在接受可选的 ViewModelStoreOwner,以便更轻松地与 LocalViewModelStoreOwner 以外的所有者合作。例如,您现在可以使用 viewModel(navBackStackEntry) 来检索与特定导航图相关联的 ViewModel。(I2628d、b/188693123) 注意:这是对二进制文件的破坏性更改 - 您必须升级到 Hilt-Navigation-Compose 1.0.0-alpha03 和 Navigation Compose 2.4.0-alpha03。如果您在使用 viewModel(key, factory) 时未指定 key =,那么这可能会成为一项对源代码的破坏性更改。您应该使用具名参数:viewModel(key = key, factory = factory)。版本 1.0.0-alpha06

2021 年 6 月 2 日

发布了 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06。版本 1.0.0-alpha06 中包含这些提交内容。

经更新后与 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 中包含这些提交内容。

新功能

经更新后与 Compose 版本 1.0.0-beta07 兼容。

bug 修复

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 中包含这些提交内容。

依赖项变更

此版本使 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 中包含这些提交内容。

API 变更

LocalViewModelStoreOwner.current 现在会返回可为 null 的 ViewModelStoreOwner,以更好地确定 ViewModelStoreOwner 在当前组合中是否可用。如果未设置 ViewModelStoreOwner,则需要 ViewModelStoreOwner 的 API(例如 viewModel() 和 NavHost)仍会抛出异常。(Idf39a) Lifecycle-Viewmodel-Compose 版本 1.0.0-alpha02

2021 年 2 月 24 日

发布了 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02。版本 1.0.0-alpha02 中包含这些提交。

API 变更

LocalViewModelStoreOwner 现在包含可与 CompositionLocalProvider 搭配使用的 provides 函数,替换了 asProvidableCompositionLocal() API。(I45d24) 注意:Lifecycle ViewModel Compose 1.0.0-alpha02 仅与 Compose 1.0.0-beta01 兼容。 Lifecycle-Viewmodel-Compose 版本 1.0.0-alpha01

2021 年 2 月 10 日

发布了 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01。版本 1.0.0-alpha01 中包含这些提交内容。

新功能

viewModel() 可组合项和 LocalViewModelStoreOwner 已从 androidx.compose.ui.viewinterop 移至 androidx.lifecycle.viewmodel.compose 软件包的此制品中。(I7a374) 注意:Lifecycle ViewModel Compose 1.0.0-alpha01 仅与 Compose 1.0.0-alpha12 兼容。 版本 2.3.1 Lifecycle 版本 2.3.1

2021 年 3 月 24 日

发布了 androidx.lifecycle:lifecycle-*:2.3.1。版本 2.3.1 中包含这些提交内容。

bug 修复

现在,NonNullableMutableLiveData lint 规则可以正确区分具有不同的可为 null 性的字段变量。(b/169249668) 版本 2.3.0 版本 2.3.0

2021 年 2 月 10 日

发布了 androidx.lifecycle:lifecycle-*:2.3.0。版本 2.3.0 中包含这些提交内容。

自 2.2.0 以来的重要变更

对非 Parcelable 类的 SavedStateHandle 支持:SavedStateHandle 现在允许您针对指定键调用 setSavedStateProvider() 以支持延迟序列化,从而提供 SavedStateProvider,该构造函数会在 SavedStateHandle 被要求保存其状态时获得对 saveState() 的回调。请参阅保存非 Parcelable 类。 Lifecycle 行为强制执行: LifecycleRegistry 现在强制将 DESTROYED 作为终止状态。 LifecycleRegistry 现在会验证其方法是否在主线程上调用。它始终是 activity、fragment 等的生命周期的一项要求。非主线程上的观察对象增加会导致难以在运行时捕获崩溃。对于您自己的组件拥有的 LifecycleRegistry 对象,您可以通过使用 LifecycleRegistry.createUnsafe(...) 明确停止检查,但之后您必须确保从其他线程访问 LifecycleRegistry 时,系统会进行适当的同步。 生命周期状态和事件辅助程序:向 Lifecycle.Event 添加了 downFrom(State)、downTo(State)、upFrom(State)、upTo(State) 的静态辅助方法,以便在生成 Event 时提供 State 和过渡方向。添加了 getTargetState() 方法,该方法会提供 Lifecycle 在 Event 结束后将直接过渡到的 State。 withStateAtLeast:添加了 Lifecycle.withStateAtLeast API,这些 API 会等待某个生命周期状态,并在状态发生变化时同步运行非挂起代码块,然后继续执行结果。这些 API 与现有的 when* 方法不同,因为它们不允许运行暂停代码,且不使用自定义调度程序。(aosp/1326081) ViewTree API:新的 ViewTreeLifecycleOwner.get(View) 和 ViewTreeViewModelStoreOwner.get(View) API 允许您根据 View 实例分别检索包含的 LifecycleOwner 和 ViewModelStoreOwner。您必须升级到 Activity 1.2.0 和 Fragment 1.3.0 以及 AppCompat 1.3.0-alpha01 或更高版本,才能正确填充此 API。findViewTreeLifecycleOwner 和 findViewTreeViewModelStoreOwner Kotlin 扩展分别在 lifecycle-runtime-ktx 和 lifecycle-viewmodel-ktx 中提供。 LiveData.observe() Kotlin 扩展废弃:现在,废弃了使用 lambda 语法所需的 LiveData.observe() Kotlin 扩展,因为改用 Kotlin 1.4 后,便不再需要此扩展。 版本 2.3.0-rc01

2020 年 12 月 16 日

发布了 androidx.lifecycle:lifecycle-*:2.3.0-rc01。版本 2.3.0-rc01 中包含这些提交内容。

bug 修复

现在,在保存状态前后,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 中包含这些提交内容。

API 变更

现在,废弃了使用 lambda 语法所需的 LiveData.observe() Kotlin 扩展,因为改用 Kotlin 1.4 后,便不再需要此扩展。(I40d3f)

bug 修复

升级 androidx 以使用 Kotlin 1.4(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 中包含这些提交内容。

bug 修复

修复了 NullSafeMutableLiveData Lint 检查中出现崩溃的问题。(aosp/1395367) 版本 2.3.0-alpha06

2020 年 7 月 22 日

发布了 androidx.lifecycle:lifecycle-*:2.3.0-alpha06。版本 2.3.0-alpha06 中包含这些提交内容。

新功能

向 Lifecycle.Event 添加了 downFrom(State)、downTo(State)、upFrom(State)、upTo(State) 的静态辅助方法,以便在生成 Event 时提供 State 和过渡方向。添加了 getTargetState() 方法,该方法会提供 Lifecycle 在 Event 结束后将直接过渡到的 State。(I00887) 添加了 Lifecycle.withStateAtLeast API,这些 API 会等待某个生命周期状态,并在状态发生变化时同步运行非挂起代码块,然后继续执行结果。这些 API 与现有的 when* 方法不同,因为它们不允许运行暂停代码,且不使用自定义调度程序。(aosp/1326081)

行为变更

LifecycleRegistry 现在强制将 DESTROYED 作为终止状态。(I00887) LifecycleRegistry 现在会验证其方法是否在主线程上调用。它始终是 activity、fragment 等的生命周期的一项要求。非主线程上的观察对象增加会导致难以在运行时捕获崩溃。对于您自己的组件拥有的 LifecycleRegistry 对象,您可以通过使用 LifecycleRegistry.createUnsafe(...) 明确停止检查,但之后您必须确保从其他线程访问 LifecycleRegistry 时,系统会进行适当的同步(Ie7280、b/137392809)

bug 修复

修复了 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 中包含这些提交内容。

bug 修复

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 中包含这些提交内容。

bug 修复

修复了 NonNullableMutableLiveData Lint 检查中出现崩溃的问题。(b/157294666) NonNullableMutableLiveData Lint 检查现在涵盖了满足以下条件的更多用例:使用非 null 类型参数在 MutableLiveData 上设置 null 值。(b/156002218) 版本 2.3.0-alpha03

2020 年 5 月 20 日

发布了 androidx.lifecycle:lifecycle-*:2.3.0-alpha03。版本 2.3.0-alpha03 中包含这些提交内容。

新功能

SavedStateHandle 现在允许您针对指定键调用 setSavedStateProvider() 以支持延迟序列化,从而提供 SavedStateProvider,该方法会在 SavedStateHandle 被要求保存其状态时获得对 saveState() 的回调。(b/155106862) 新的 ViewTreeViewModelStoreOwner.get(View) API 允许您根据 View 实例检索包含的 ViewModelStoreOwner。您必须升级到 Activity 1.2.0-alpha05、Fragment 1.3.0-alpha05 和 AppCompat 1.3.0-alpha01,才能正确填充此 API。已向 lifecycle-viewmodel-ktx 添加了 findViewModelStoreOwner() Kotlin 扩展。(aosp/1295522)

bug 修复

修复了导致 Lifecycle 2.3.0-alpha01 中发布的 MutableLiveData Lint 检查无法与 lifecycle-livedata-core-ktx 工件一起发布的问题。(b/155323109) 版本 2.3.0-alpha02

2020 年 4 月 29 日

发布了 androidx.lifecycle:lifecycle-*:2.3.0-alpha02。版本 2.3.0-alpha02 中包含以下提交内容。

API 变更

SavedStateViewModelFactory 现在允许您将 null Application 传递给其构造函数,以更好地支持不容易获得应用且不需要支持 AndroidViewModel 的情况。(aosp/1285740)

bug 修复

通过避免在 API 级别为 28 及更低的设备上类验证失败,提高了冷启动性能。(aosp/1282118) 版本 2.3.0-alpha01

2020 年 3 月 4 日

发布了 androidx.lifecycle:lifecycle-*:2.3.0-alpha01。版本 2.3.0-alpha01 中包含这些提交内容。

新功能

新的 ViewTreeLifecycleOwner.get(View) API 允许您根据 View 实例检索包含的 LifecycleOwner。您必须升级到 Activity 1.2.0-alpha01 和 Fragment 1.3.0-alpha01,才能正确填充此 API。lifecycle-runtime-ktx 中提供了 findViewTreeLifecycleOwner Kotlin 扩展。(aosp/1182361、aosp/1182956) 添加了新的 Lint 检查,可在您为 Kotlin 中定义为非 null 的 MutableLiveData 设置 null 值时发出警告。此检查在使用 livedata-core-ktx 或 livedata-ktx 工件时可用。(aosp/1154723、aosp/1159092) 发布了新的 lifecycle-runtime-testing 工件,该工件提供可实现 LifecycleOwner 的 TestLifecycleOwner,以及线程安全的可变 Lifecycle。(aosp/1242438)

bug 修复

lifecycle-runtime 工件现在拥有唯一的软件包名称。(aosp/1187196) 注意:根据 Lifecycle 2.2.0 版本说明,不再发布 lifecycle-extensions 制品。 版本 2.2.0 ViewModel-Savedstate 版本 2.2.0

2020 年 2 月 5 日

发布了 androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0。版本 2.2.0 中包含这些提交内容。

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 中包含这些提交内容。

自 2.1.0 以来的重要变更

Lifecycle 协程集成:新的 lifecycle-runtime-ktx 工件实现了 Lifecycle 协程与 Kotlin 协程之间的集成。此外,我们还扩展了 lifecycle-livedata-ktx 以便利用协程的优势。如需了解详情,请参阅将 Kotlin 协程与架构组件一起使用。 废弃 ViewModelProviders.of():已废弃 ViewModelProviders.of()。您可以将 Fragment 或 FragmentActivity 传递给新的 ViewModelProvider(ViewModelStoreOwner) 构造函数,以便在使用 Fragment 1.2.0 时实现相同的功能。 废弃 lifecycle-extensions 制品:随着上方所述的 ViewModelProviders.of() 废弃,此版本标志着废弃了 lifecycle-extensions 中的最后一个 API,因此现在该制品已完全被废弃。我们强烈建议依赖于您需要的特定 Lifecycle 制品(例如,如果您使用的是 LifecycleService,则依赖于 lifecycle-service;如果您使用的是 ProcessLifecycleOwner,则依赖于 lifecycle-process)而不是 lifecycle-extensions,因为将来不会有 lifecycle-extensions 的 2.3.0 版本。 Gradle 增量注释处理器:默认情况下,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 中包含这些提交内容。

bug 修复

修复了在 ViewModelStore 中存储模拟 ViewModel 而后以默认出厂设置查询它时出现的错误。 修复了在 launchWhenCreated 以及类似方法(将在相应生命周期事件中同步调用)中使用 Dispatchers.Main.immediate 的问题。(aosp/1156203)

外部贡献

非常感谢 Anders Jä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 中包含这些提交内容。

bug 修复

修复了库的 proguard 设置中的 bug,在目标 API 低于 29 的情况下,该 bug 会影响运行 API 28 以上级别的设备。(b/142778206) 版本 2.2.0-rc01

2019 年 10 月 23 日

发布了 androidx.lifecycle:lifecycle-*:2.2.0-rc01。版本 2.2.0-rc01 中包含这些提交内容。

bug 修复

修复了 launchWhenCreated 和相关方法由于使用 Dispatchers.Main 而不使用 Dispatchers.Main.immediate 导致比关联生命周期方法晚一帧运行的问题。(aosp/1145596)

外部贡献

非常感谢 Nicklas Ansman 为修复此问题所做出的贡献!(aosp/1145596) 版本 2.2.0-beta01

2019 年 10 月 9 日

发布了 androidx.lifecycle:lifecycle-*:2.2.0-beta01。版本 2.2.0-beta01 中包含这些提交内容。

bug 修复

修复了 Lifecycle 2.2.0-alpha05 中引入的 ProcessLifecycleOwner 顺序以及 Activity 的 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 中包含这些提交内容。

bug 修复

修复了协程 LiveData 构建器中的竞态条件问题。b/140249349 版本 2.2.0-alpha04

2019 年 9 月 5 日

发布了 androidx.lifecycle:lifecycle-*:2.2.0-alpha04。点击此处可查看此版本中包含的提交内容。

新功能

现在,lifecycleScope、whenCreated、whenStarted、whenResumed、viewModelScope 以及 liveData 的底层实现均使用 Dispatchers.Main.immediate 而不是 Dispatchers.Main。(b/139740492)

外部贡献

非常感谢 Nicklas Ansman 为迁移到 Dispatchers.Main.immediate 所做出的贡献!(aosp/1106073) 版本 2.2.0-alpha03

2019 年 8 月 7 日

发布了 androidx.lifecycle:lifecycle-*:2.2.0-alpha03。点击此处可查看此版本中包含的提交内容。

新功能

现在,ViewModelStoreOwner 的实现可以选择性地实现 HasDefaultViewModelProviderFactory,从而提供默认的 ViewModelProvider.Factory。这一过程已针对 Activity 1.1.0-alpha02、Fragment 1.2.0-alpha02 和 Navigation 2.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。点击此处可查看此版本中包含的提交内容。

API 变更

已将 LiveDataScope.initialValue 替换为 LiveDataScope.latestValue,后者将跟踪 liveData 块当前发出的值。 已将新的过载添加到 liveData 生成工具,以接收 Duration 参数作为类型 timeout 版本 2.2.0-alpha01

2019 年 5 月 7 日

发布了 androidx.lifecycle:*:2.2.0-alpha01。点击此处可查看此版本中包含的提交内容。

新功能

此版本新增了几项功能,增加了对 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 中包含这些提交内容。

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 中包含这些提交内容。

依赖项变更

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 中包含这些提交内容。

依赖项变更

现在依赖于 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 中包含这些提交内容。

ViewModel-Savedstate 版本 1.0.0-beta01

2019 年 10 月 9 日

发布了 androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01。版本 1.0.0-beta01 中包含这些提交内容。

bug 修复

修复了在 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 中包含这些提交内容。

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。点击此处可查看此版本中包含的提交内容。

重大变更

lifecycle-viewmodel-savedstate 不再依赖于 fragment,移除了相关的 SavedStateViewModelFactory(Fragment) 和 SavedStateViewModelFactory(FragmentActivity) 构造函数。现在,SavedStateViewModelFactory 是 Activity 1.1.0-alpha02、Fragment 1.2.0-alpha02 和 Navigation 2.2.0-alpha01 的默认出厂设置。(b/135716331) ViewModel-SavedState 版本 1.0.0-alpha02

2019 年 7 月 2 日

发布了 androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02。点击此处可查看此版本中包含的提交内容。

新功能

添加了可接受默认值的 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。点击此处可查看此初始版本的完整提交内容日志。

新功能

现在,ViewModels 可为 savedstate 做出贡献。为此,您可以使用新引入的 ViewModel 的出厂 SavedStateVMFactory,并且 ViewModel 应该具有一个可接收 SavedStateHandle 对象作为参数的构造函数。 版本 2.1.0

自 2.0.0 以来的重要变更

添加了 LifecycleEventObserver,用于应对需要生命周期事件流的情况。它是一个公共 API,而不是隐藏的 GenericLifecycleObserver 类。 为 LiveData.observe 方法和 Transformations.* 方法添加了 ktx 扩展。 添加了 Transformations.distinctUntilChanged,它可以创建一个新的 LiveData 对象,该对象会在源 LiveData 值发生更改后发出一个值。 通过添加扩展属性 ViewModel.viewModelScope 在 ViewModel 中添加了协程支持。 版本 2.1.0

2019 年 9 月 5 日

发布了 androidx.lifecycle:lifecycle-*:2.1.0。点击此处可查看此版本中包含的提交内容。

版本 2.1.0-rc01

2019 年 7 月 2 日

发布了 androidx.lifecycle:*:2.1.0-rc01,该版本与 androidx.lifecycle:*:2.1.0-beta01 相比没有变化。点击此处可查看此版本中包含的提交内容。

版本 2.1.0-beta01

2019 年 5 月 7 日

发布了 androidx.lifecycle:*:2.1.0-beta01。点击此处可查看此版本中包含的提交内容。

新功能

Lifecycle 已升级为测试版:在以前的 Alpha 版中引入的 API(例如用于转换和观察的 liveData 扩展函数以及使用属性委托的 ViewModel 初始化等)已达到稳定状态,不会发生变化。 版本 2.1.0-alpha04

2019 年 4 月 3 日

发布了 androidx.lifecycle:*:2.1.0-alpha04。点击此处可查看此版本中包含的提交内容。

注意:lifecycle-viewmodel-ktx 与 Activity 1.0.0-alpha01 至 1.0.0-alpha05 以及 Fragment 1.1.0-alpha01 至 1.1.0-alpha05 不兼容。请分别升级到 Activity 1.0.0-alpha06 和 Fragment 1.1.0-alpha06。

API 变更

重大变更:by viewModels() 和 by activityViewModels() 后的底层 API 已进行了更改,以直接支持 ViewModelStore,而不是仅支持 ViewModelStoreOwner。(aosp/932932) 版本 2.1.0-alpha03

2019 年 3 月 13 日

发布了 androidx.lifecycle:*:2.1.0-alpha03。点击此处可查看此版本中包含的完整提交内容列表。

API 变更

已移除 ViewModelProvider.KeyedFactory。除了 ViewModelProvider.Factory 之外,第二个接口也会因 by viewmodels {} Kotlin 属性委托而无法与新功能完美搭配使用。(aosp/914133) 版本 2.1.0-alpha02

2019 年 1 月 30 日

发布了 androidx.lifecycle 2.1.0-alpha02。

API 变更

LifecycleRegistry 现在包含 setCurrentState() 方法,用于替换现已废弃的 setState() 方法。(aosp/880715)

bug 修复

修复了在所在的 ViewModelStore 被清除时模拟 ViewModel 实例发生崩溃的问题。b/122273087 版本 2.1.0-alpha01

2018 年 12 月 17 日

发布了 androidx.lifecycle 2.1.0-alpha01。

新功能

添加了 LifecycleEventObserver,用于应对需要生命周期事件流的情况。它是一个公共 API,而不是隐藏的 GenericLifecycleObserver 类。 为 LiveData.observe 方法和 Transformations.* 方法添加了 ktx 扩展。 添加了 Transformations.distinctUntilChanged 方法。它可以创建一个新的 LiveData 对象,该对象会在源 LiveData 值发生更改后发出一个值。 在 ViewModel 中添加了协程支持:添加了 ViewModel.viewModelScope 扩展属性。 添加了 ViewModelProvider.KeyedFactory,它是 ViewModel 的出厂设置,可接收 create 方法中的 key 和 Class。 版本 2.0.0 版本 2.0.0

2018 年 9 月 21 日

发布了 Lifecycle 2.0.0,与 2.0.0-rc01 相比,该版本修复了 ViewModel 中的一个 bug。

bug 修复

修复了错误地移除了构造函数的 ViewModel ProGuard 规则 b/112230489 版本 2.0.0-beta01

2018 年 7 月 2 日

bug 修复

修复了 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 日

只有一项小的变更: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.0 android.arch.lifecycle:viewmodel:1.1.0 注意:Lifecycle Extensions 1.0.0 (android.arch.lifecycle:extensions:1.0.0) 与 livedata:1.1.0 或 viewmodel:1.1.0 不兼容。 请更新为 extensions:1.1.0,该版本包含 livedata:1.1.0 和 viewmodel 1.1.0 的传递依赖项。注意:android.arch.lifecycle:reactivestreams:1.1.0 现在仅依赖于 android.arch.lifecycle:livedata:1.1.0,而不是完整的 android.arch.lifecycle:extensions:1.1.0。

API 变更

已废弃的 LifecycleActivity 和 LifecycleFragment 现已移除 - 请使用 FragmentActivity、AppCompatActivity 或支持 Fragment。 向 ViewModelProviders 和 ViewModelStores 添加了 @NonNull 注释 废弃了 ViewModelProviders 构造函数 - 请直接使用其静态方法 废弃了 ViewModelProviders.DefaultFactory - 请使用 ViewModelProvider.AndroidViewModelFactory 添加了静态 ViewModelProvider.AndroidViewModelFactory.getInstance(Application) 方法,用于检索适合创建 ViewModel 和 AndroidViewModel 实例的静态 Factory。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3