Lifecycle

生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您编写更有条理且往往更精简的代码,此类代码更易于维护。如需了解详情,请参阅参考文档

上次更新时间 当前稳定版 下一候选版本 Beta 版 Alpha 版
2019 年 11 月 7 日 2.1.0 2.2.0-rc02 - -

声明依赖项

要添加 Lifecycle 的依赖项,您必须将 Google Maven 代码库添加到项目中。请阅读 Google 的 Maven 代码库了解详情。

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

    dependencies {
        def lifecycle_version = "2.1.0"

        // ViewModel and LiveData
        implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
        // alternatively - just ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // For Kotlin use lifecycle-viewmodel-ktx
        // alternatively - just LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // alternatively - Lifecycles only (no ViewModel or LiveData). Some UI
        //     AndroidX libraries use this lightweight import for Lifecycle
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // For Kotlin use lifecycle-reactivestreams-ktx

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
    }
    

如需详细了解依赖项,请参阅添加编译依赖项

版本 2.2.0

版本 2.2.0-rc02

2019 年 11 月 7 日

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

问题修复

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

问题修复

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

问题修复

  • 修复了 Lifecycle 2.2.0-alpha05 中引入的 ProcessLifecycleOwner 顺序以及 Activity 的 LifecycleOwner 在 Android 10 设备上迁移到启动和恢复状态的回归问题。(aosp/1128132)
  • 修复了 Lifecycle 2.2.0-alpha05 中引入的在使用 2.0.02.1.0lifecycle-process 时会导致 NullPointerException 的回归问题。(b/141536990)

版本 2.2.0-alpha05

2019 年 9 月 18 日

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

问题修复

  • 修复了协程 livedata 生成工具中的竞争条件问题。b/140249349

版本 2.2.0-alpha04

2019 年 9 月 5 日

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

新功能

  • 现在,lifecycleScopewhenCreatedwhenStartedwhenResumedviewModelScope 以及 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。点击此处可查看此版本中包含的提交内容。

新功能

API 变更

  • 已弃用 ViewModelProviders.of()。您可以将 FragmentFragmentActivity 传递给新的 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

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

问题修复

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

重大变更

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

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)

问题修复

  • 修复了在包含 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 方法中的 keyClass

版本 2.0.0

版本 2.0.0

2018 年 9 月 21 日

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

问题修复

  • 修复了错误地移除了构造函数的 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 日

只有一项小的变更:android.arch.core.util.Function 已从 arch:runtime 移至 arch:common。这样,便可以在没有运行时依赖项的情况下使用它,例如在下面的 paging:common 中。

lifecycle:commonlifecycle:runtime 的依赖项,所以此变更不会直接影响 lifecycle:runtime,而只会影响像 Paging 一样直接依赖于 的模块。

版本 1.1.0

2018 年 1 月 22 日

打包变更

现在可使用小得多的新增依赖项:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

API 变更

  • 已弃用的 LifecycleActivityLifecycleFragment已移除 - 请使用 FragmentActivityAppCompatActivity 或支持 Fragment
  • @NonNull 注释已添加到 ViewModelProvidersViewModelStores
  • ViewModelProviders 构造函数已弃用 - 请直接使用其静态方法
  • ViewModelProviders.DefaultFactory 已弃用 - 请使用 ViewModelProvider.AndroidViewModelFactory
  • 添加了静态 ViewModelProvider.AndroidViewModelFactory.getInstance(Application) 方法,用于检索适合创建 ViewModelAndroidViewModel 实例的静态 Factory