生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于生成更有条理且往往更精简的代码,此类代码更易于维护。如需了解详情,请参阅参考文档。
声明依赖项
要添加 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-alpha05
2019 年 9 月 18 日
发布了 androidx.lifecycle:lifecycle-*:2.2.0-alpha05
。版本 2.2.0-alpha05 中包含这些提交内容。
问题修复
- 修复了协程 livedata 生成工具中的竞争条件问题。b/140249349
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)
版本 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.1.0
2019 年 9 月 5 日
发布了 androidx.lifecycle:lifecycle-*:2.1.0
。点击此处可查看此版本中包含的提交内容。
自 2.0.0 以来的重要变更
以下变更已升级为稳定版本:
- 添加了
LifecycleEventObserver
,用于应对需要生命周期事件流的情况。它是一个公共 API,而不是隐藏的GenericLifecycleObserver
类。 - 为
LiveData.observe
方法和Transformations.*
方法添加了 KTX 扩展。 - 添加了
Transformations.distinctUntilChanged
,它创建了一个新的 LiveData 对象,该对象会在源LiveData
值发生更改后发出一个值。 - 通过添加扩展属性
ViewModel.viewModelScope
在 ViewModel 中添加了协程支持。
版本 2.2.0-alpha03
2019 年 8 月 7 日
发布了 androidx.lifecycle:lifecycle-*:2.2.0-alpha03
。点击此处可查看此版本中包含的提交内容。
新功能
- 现在,
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)
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
是 Activity1.1.0-alpha02
、Fragment1.2.0-alpha02
和 Navigation2.2.0-alpha01
的默认出厂设置。(b/135716331)
版本 2.2.0-alpha02
2019 年 7 月 2 日
发布了 androidx.lifecycle:*:2.2.0-alpha02
。点击此处可查看此版本中包含的提交内容。
API 变更
- 将
LiveDataScope.initialValue
替换为LiveDataScope.latestValue
,后者将跟踪liveData
块当前发出的值。 - 将新的过载添加到
liveData
生成工具,以接收timeout
参数作为类型Duration
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
。
版本 2.1.0-rc01
2019 年 7 月 2 日
发布了 androidx.lifecycle:*:2.1.0-rc01
,该版本与 androidx.lifecycle:*:2.1.0-beta01
相比没有变化。点击此处可查看此版本中包含的提交内容。
版本 2.2.0-alpha01
2019 年 5 月 7 日
发布了 androidx.lifecycle:*:2.2.0-alpha01
。点击此处可查看此版本中包含的提交内容。
新功能
- 此版本新增了几项功能,增加了对 Lifecycle 和 LiveData 的 Kotlin 协程的支持。点击此处可查看相关的详细文档。
版本 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)
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-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
方法中的key
和Class
。
版本 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: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
API 变更
- 已弃用的
LifecycleActivity
和LifecycleFragment
现已移除 - 请使用FragmentActivity
和AppCompatActivity
或支持Fragment
。 @NonNull
注释已添加到ViewModelProviders
和ViewModelStores
ViewModelProviders
构造函数已弃用 - 请直接使用其静态方法ViewModelProviders.DefaultFactory
已弃用 - 请使用ViewModelProvider.AndroidViewModelFactory
- 已添加
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
静态方法,用于检索适合创建ViewModel
和AndroidViewModel
实例的静态Factory
。