Lifecycle

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

上次更新时间 当前稳定版 下一候选版本 Beta 版 Alpha 版
2020 年 3 月 4 日 2.2.0 - - 2.3.0-alpha01

声明依赖项

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

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

Kotlin

    dependencies {
        def lifecycle_version = "2.2.0"
        def arch_version = "2.1.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$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"
    }
    

Java

    dependencies {
        def lifecycle_version = "2.2.0"
        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"
    }
    

如需详细了解依赖项,请参阅添加构建依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或想就改进此库提供意见,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击加注星标按钮,为现有问题投票。

创建新问题

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

版本 2.3.0

版本 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-alpha01Fragment 1.3.0-alpha01,才能正确填充此 API。lifecycle-runtime-ktx 中提供了 findViewTreeLifecycleOwner Kotlin 扩展。(aosp/1182361aosp/1182956
  • 添加了新的 Lint 检查,可在您为 Kotlin 中定义为非 null 的 MutableLiveData 设置 null 值时发出警告。此检查在使用 livedata-core-ktxlivedata-ktx 工件时可用。(aosp/1154723aosp/1159092
  • 发布了新的 lifecycle-runtime-testing 工件,该工件提供可实现 LifecycleOwnerTestLifecycleOwner,以及线程安全的可变 Lifecycle。(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 中包含这些提交内容

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() 。您可以将 FragmentFragmentActivity 传递给新的 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 中包含这些提交内容

问题修复

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

问题修复

  • 修复了库的 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

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

问题修复

  • 修复了在 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 一样直接依赖于 lifecycle:common 的模块。

版本 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