Lifecycle
이 표에는 androidx.lifecycle
그룹의 모든 아티팩트가 나열됩니다.
아티팩트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
lifecycle-* | 2.5.1 | - | 2.6.0-beta01 | - |
lifecycle-viewmodel-compose | 2.5.1 | - | 2.6.0-beta01 | - |
종속 항목 선언
Lifecycle의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
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") }
자바
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") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 2.6
버전 2.6.0-beta01
2023년 2월 8일
androidx.lifecycle:lifecycle-*:2.6.0-beta01
이 출시되었습니다. 버전 2.6.0-beta01에 포함된 커밋을 확인하세요.
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에 포함된 커밋을 확인하세요.
Kotlin 변환
- 이제
Transformations
가 Kotlin으로 작성됩니다. 이는Transformations.map
과 같은 문법을 직접 사용하는 Kotlin으로 작성된 클래스에 대해 소스와 호환되지 않는 변경사항입니다. 이제 Kotlin 코드는 이전에는lifecycle-livedata-ktx
를 사용할 때만 사용할 수 있었던 Kotlin 확장 메서드 문법을 사용해야 합니다. 자바 프로그래밍 언어를 사용할 경우androidx.arch.core.util.Function
메서드를 사용하는 이러한 메서드의 버전은 지원 중단되며 KotlinFunction1
을 사용하는 버전으로 대체됩니다. 이 변경사항에 따라 바이너리 호환성이 유지됩니다. (I8e14f) - 이제
ViewTreeViewModelStoreOwner
가 Kotlin으로 작성됩니다. Kotlin으로 작성된 클래스에 대해 소스와 호환되지 않는 변경사항이며, 이제 이전에 설정된 소유자를 설정하고 찾으려면androidx.lifecycle.findViewTreeViewModelStoreOwner
와androidx.lifecycle.setViewTreeViewModelStoreOwner
의View
에서 Kotlin 확장 메서드를 직접 가져와서 사용해야 합니다. 자바 프로그래밍 언어로 작성된 구현의 경우 바이너리와 호환되고 소스와 호환됩니다. (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
에 명시적 값이LiveData
에서 설정되었는지 나타내는 새로운isInitialized
속성이 포함됩니다. 따라서 어떤 값도 설정된 적이 없으므로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.findViewTreeLifecycleOwner
와androidx.lifecycle.setViewTreeLifecycleOwner
의View
에서 Kotlin 확장 메서드를 직접 가져와서 사용해야 합니다.lifecycle-runtime-ktx
의 이전 Kotlin 확장 프로그램을 대체합니다. 자바 프로그래밍 언어로 작성된 구현의 경우 바이너리와 호환되고 소스와 호환됩니다. (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()
을 호출할 때SavedStateHandle
이 더 이상ClassCastException
과 함께 비정상 종료되지 않습니다. (I6ae7c)
버전 2.6.0-alpha03
2022년 10월 24일
androidx.lifecycle:lifecycle-*:2.6.0-alpha03
이 출시되었습니다. 버전 2.6.0-alpha03에 포함된 커밋을 확인하세요.
버그 수정
- 여러 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에 포함된 커밋을 확인하세요.
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.4 이상의 스테이트풀 생성자를 사용하는 경우 Lifecycle2.5.1
:AndroidViewModelFactory
의 맞춤 구현에서create(modelClass)
함수를 올바르게 호출합니다. (I5b315, b/238011621)
버전 2.6.0-alpha01
2022년 6월 29일
androidx.lifecycle:lifecycle-*:2.6.0-alpha01
이 출시되었습니다. 버전 2.6.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
- 흐름에서 수집하고 수명 주기를 인식하는 방식으로 수집된 값의 마지막 값을 Compose 상태로 표현하는
collectAsStateWithLifecycle
의StateFlow
와Flow
에 관한 새 확장 프로그램을 추가했습니다. 수명 주기가 최소한 특정Lifecycle.State
에 있으면 흐름이 수집되고 새 내보내기가 상태 값으로 설정됩니다. 이때, 수명 주기가Lifecycle.State
미만이면 흐름 수집이 중단되고 상태 값은 업데이트되지 않습니다. (I1856e, b/230557927)
버전 2.5
버전 2.5.1
2022년 7월 27일
androidx.lifecycle:lifecycle-*:2.5.1
이 출시되었습니다. 버전 2.5.1에 포함된 커밋을 확인하세요.
버그 수정
- 이제
AndroidViewModelFactory
맞춤 구현이Lifecycle
2.4 이상에서 스테이트풀(Stateful)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
은 이제LiveData
를 사용하는 대신 값 변경을 모니터링하기 위해 KotlinStateFlow
를 반환하는getStateFlow()
API를 제공합니다.ViewModel CreationExtras - 이제 더 이상 맞춤
ViewModelProvider.Factory
를 작성할 때Application
과SavedStateHandle
의 액세스를 가져오기 위해AndroidViewModelFactory
와AbstractSavedStateViewModelFactory
를 확장하지 않아도 됩니다. 대신 이 필드는create
:create(Class<T>, CreationExtras)
의 새 오버로드를 통해 모든ViewModelProvider.Factory
서브클래스에CreationExtras
로 제공됩니다. 이러한 추가 항목은 Activity1.5.0
및 Fragment1.5.0
을 사용할 때 각각 활동 또는 프래그먼트에 의해 자동으로 제공됩니다.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
은viewModelFactory
Kotlin DSL을 제공하며 이를 통해CreationExtras
를 기본 데이터 소스로 사용하여 하나 이상의 람다 이니셜라이저(맞춤 팩토리에서 지원하는ViewModel
클래스당 하나)의 측면에서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
가 맞춤ViewModelProvider.Factory
를 만들지 않고도 람다 팩토리를 사용하여ViewModel
인스턴스를 생성하는viewModel()
API를 제공합니다.// 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는 `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 및 새 생성자 오버로드를 추가했습니다. 이로써onCleared()
에서 수동 작업을 하지 않아도ViewModel
이 지워질 때 종료되는 하나 이상의Closeable
객체를ViewModel
에 추가할 수 있습니다.예를 들어, 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에 포함된 커밋을 확인하세요.
버그 수정
- 이전 버전의 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에 포함된 커밋을 확인하세요.
버그 수정
- 이제
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
에 유지하기 위한 키로 속성 이름을 사용하기 위해SavedStateHandle.saveable
속성 위임을 추가했습니다. (I8bb86, b/225014345)
버그 수정
- 여러 백 스택을 사용할 경우 기본 탭이 아닌 하단 탐색 탭에서 하나의
NavHost
를 또 다른NavHost
에 중첩하면IllegalStateException
이 발생하는 문제를 해결했습니다. (I11bd5, b/228865698)
버전 2.5.0-alpha06
2022년 4월 6일
androidx.lifecycle:lifecycle-*:2.5.0-alpha06
이 출시되었습니다. 버전 2.5.0-alpha06에 포함된 커밋을 확인하세요.
새로운 기능
rememberSaveable
과의 패리티를 위해SavedStateHandle.saveable
에 실험용MutableState
오버로드가 추가되었습니다. (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에 포함된 커밋을 확인하세요.
새로운 기능
lifecycle-viewmodel-compose
모듈이 이제SavedStateHandleSaver
를 제공합니다. 이 API는 실험용으로SavedStateHandle
의 값과rememberSaveable
이 사용하는 저장된 인스턴스 상태와 동일한 인스턴스 상태가 올바르게 통합되었는지 확인합니다. (Ia88b7, b/195689777)
API 변경사항
- 자바에서 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에 포함된 커밋을 확인하세요.
API 변경사항
- 이제
SavedStateHandle
이 값 변경을 모니터링하기 위해LiveData
를 사용하는 대신 KotlinStateFlow
를 반환하는getStateFlow()
API를 대안으로 제공합니다. (Iad3ab, b/178037961)
버전 2.5.0-alpha03
2022년 2월 23일
androidx.lifecycle:lifecycle-*:2.5.0-alpha03
이 출시되었습니다. 버전 2.5.0-alpha03에 포함된 커밋을 확인하세요.
새로운 기능
addCloseable()
API 및 새 생성자 오버로드를 추가했습니다. 이로써onCleared()
에서 수동 작업을 하지 않아도ViewModel
이 지워질 때 종료되는 하나 이상의Closeable
객체를ViewModel
에 추가할 수 있습니다. (I55ea0)- 이제
lifecycle-viewmodel
이InitializerViewModelFactory
를 제공합니다. 이로써CreationExtras
를 기본 데이터 소스로 사용하여 특정ViewModel
클래스 처리를 위해 람다를 추가할 수 있습니다. (If58fc, b/216687549) - 이제
lifecycle-viewmodel-compose
가 맞춤ViewModelProvider.Factory
를 만들지 않고도 람다 팩토리를 사용하여ViewModel
인스턴스를 생성하는viewModel()
API를 제공합니다. (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에 포함된 커밋을 확인하세요.
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)
버그 수정
- Lifecycle
2.4.1
에서: Startup 1.1.1을 사용하도록lifecycle-process
를 업데이트했습니다.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
를 사용하는 스테이트리스(Stateless) 팩토리라는 세계로 이동합니다. (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 확장 함수를 사용하여 이를 필요로 하는 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에 포함된 커밋을 확인하세요.
버그 수정
- 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 허용 제네릭을 더 이상 허용하지 않습니다.
- 소스 브레이킹 체인지:
- 새 코루틴 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에 포함된 커밋을 확인하세요.
버전 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)
외부 기여
버전 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)
외부 기여
repeatOnLifecycle
문서의 코드 스니펫을 수정해 주신 chao2zhang님께 감사드립니다. #205.
버전 2.4.0-alpha02
2021년 6월 16일
androidx.lifecycle:lifecycle-*:2.4.0-alpha02
가 출시되었습니다. 버전 2.4.0-alpha02에 포함된 커밋을 확인하세요.
새로운 기능
repeateOnLifecycle
이onStart()
나onResume()
에서 잘못 사용된 경우를 감지하는 새RepeatOnLifecycleWrongUsage
린트 검사를lifecycle-runtime-ktx
에 추가했습니다. (706078, b/187887400)
API 변경사항
LifecycleOwner.addRepeatingJob
API를 삭제했으며, 구조화된 동시 실행을 준수하고 더 쉽게 추론할 수 있는Lifecycle.repeatOnLifecycle
로 대체됩니다. (I4a3a8)- 다른
androidx.startup.Initializer
가 종속 항목으로 사용할 수 있도록ProcessLifecycleInitializer
를 공개합니다. (I94c31)
버그 수정
- 필드에 수정자가 있을 때
NullSafeMutableLiveData
린트 검사에서 발생하던 문제를 수정했습니다. (#147, b/183696616) - 제네릭을 사용할 때
NullSafeMutableLiveData
린트 검사에서 발생하던 또 다른 문제를 수정했습니다. (#161, b/184830263)
외부 기여
NullSafeMutableLiveData
린트 검사를 개선한 maxsav님께 감사드립니다. (#147, b/183696616)NullSafeMutableLiveData
린트 검사를 개선한 kozaxinan님께 감사드립니다. (#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
를 사용하여 초기화했습니다.이전에 프로세스 수명 주기를 초기화할 때
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.repeatOnLifecycle
API를 사용하는 특정 상태일 때 업스트림 Flow에서 값을 방출하는Flow.flowWithLifecycle
API를 추가했습니다. 또한 이는 새로운 API인LifecycleOwner.addRepeatinJob
API를 대신합니다. (I0f4cd)
버그 수정
- Lifecycle 2.3.1에서: 이제
NonNullableMutableLiveData
린트 규칙이 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)
버전 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
과 호환되도록 업데이트되었습니다.
버그 수정
- 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
가 설정되어 있지 않으면viewModel()
및NavHost
와 같이ViewModelStoreOwner
가 필요한 API에서 여전히 예외가 발생합니다. (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-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)
버전 2.3.1
Lifecycle 버전 2.3.1
2021년 3월 24일
androidx.lifecycle:lifecycle-*:2.3.1
이 출시되었습니다. 버전 2.3.1에 포함된 커밋을 확인하세요.
버그 수정
- 이제
NonNullableMutableLiveData
린트 규칙이 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()
를 호출할 수 있도록 하여 지연 직렬화를 지원하므로SavedStateHandle
에 상태 저장을 요청할 때saveState()
콜백을 가져오는SavedStateProvider
를 제공합니다. 비 parcelable 클래스 저장을 참고하세요. - 수명 주기 동작 시행:
- 이제 LifecycleRegistry는
DESTROYED
를 터미널 상태로 적용합니다. - 이제
LifecycleRegistry
는 메서드가 기본 스레드에서 호출되는지 확인합니다. 이는 항상 활동, 프래그먼트 등의 수명 주기 요구사항이었습니다. 기본 스레드가 아닌 스레드에서 관찰자를 추가하면 런타임 시 비정상 종료를 발견하기가 어려웠습니다. 자체 구성요소에서 소유한LifecycleRegistry
객체의 경우LifecycleRegistry.createUnsafe(...)
를 사용하여 검사를 명시적으로 선택 해제할 수 있습니다. 하지만, 이LifecycleRegistry
를 서로 다른 스레드에서 액세스할 때 적절한 동기화가 설정되었는지 확인해야 합니다.
- 이제 LifecycleRegistry는
- 수명 주기 상태 및 이벤트 도우미:
State
와 전환 방향을 고려하여Event
를 생성하도록downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
의 정적 도우미 메서드가Lifecycle.Event
에 추가되었습니다.Event
에 따라 Lifecycle에서 직접 전환하는State
를 제공하는getTargetState()
메서드가 추가되었습니다. withStateAtLeast
: 수명 주기 상태를 대기하고 상태 변경 지점에서 정지되지 않는 코드 블록을 동기식으로 실행한 후 그 결과로 다시 시작하는Lifecycle.withStateAtLeast
API를 추가했습니다. 이러한 API는 정지된 코드 실행을 허용하지 않고 맞춤 디스패처를 사용하지 않으므로 기존의when*
메서드와 다릅니다. (aosp/1326081)ViewTree
API: 새ViewTreeLifecycleOwner.get(View)
및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에 포함된 커밋을 확인하세요.
버그 수정
- 이제
SavedStateHandle
의keys()
메서드가 상태가 저장되기 전후에 일관됩니다. 이제 이전에setSavedStateProvider()
와 함께 사용된 키와set()
및getLiveData()
와 함께 사용된 키가 포함됩니다. (aosp/1517919, b/174713653)
외부 기여
- Lifecycle 인식 코루틴을 정지하는 API가 이제
yield()
호출을 더욱 효과적으로 처리합니다. 니클라스 안스만 기어츠님께 감사드립니다. (aosp/1430830, b/168777346)
버전 2.3.0-beta01
2020년 10월 1일
androidx.lifecycle:lifecycle-*:2.3.0-beta01
이 출시되었습니다. 버전 2.3.0-beta01에 포함된 커밋을 확인하세요.
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에 포함된 커밋을 확인하세요.
버그 수정
NullSafeMutableLiveData
린트 검사에서 발생하는 비정상 종료 문제가 수정되었습니다. (aosp/1395367)
버전 2.3.0-alpha06
2020년 7월 22일
androidx.lifecycle:lifecycle-*:2.3.0-alpha06
이 출시되었습니다. 버전 2.3.0-alpha06에 포함된 커밋을 확인하세요.
새로운 기능
- 특정
State
와 전환 방향을 고려하여Event
를 생성하도록downFrom(State)
,downTo(State)
,upFrom(State)
,upTo(State)
의 정적 도우미 메서드가Lifecycle.Event
에 추가되었습니다.Event
에 따라 수명 주기에서 직접 전환하는State
를 제공하는getTargetState()
메서드가 추가되었습니다. (I00887) - 수명 주기 상태를 대기하고 상태 변경 지점에서 정지되지 않는 코드 블록을 동기식으로 실행한 후 그 결과로 다시 시작하는
Lifecycle.withStateAtLeast
API를 추가했습니다. 이러한 API는 정지된 코드 실행을 허용하지 않고 맞춤 디스패처를 사용하지 않으므로 기존의when*
메서드와 다릅니다. (aosp/1326081)
동작 변경사항
- 이제 LifecycleRegistry는
DESTROYED
를 터미널 상태로 적용합니다. (I00887) - 이제
LifecycleRegistry
는 메서드가 기본 스레드에서 호출되는지 확인합니다. 이는 항상 활동, 프래그먼트 등의 수명 주기 요구사항이었습니다. 기본 스레드가 아닌 스레드에서 관찰자를 추가하면 런타임 시 비정상 종료를 발견하기가 어려웠습니다. 자체 구성요소에서 소유한LifecycleRegistry
객체의 경우LifecycleRegistry.createUnsafe(...)
를 사용하여 검사를 명시적으로 선택 해제할 수 있습니다. 하지만, 이LifecycleRegistry
를 서로 다른 스레드에서 액세스할 때 적절한 동기화가 설정되었는지 확인해야 합니다. (Ie7280, b/137392809)
버그 수정
NullSafeMutableLiveData
에서 비정상 종료 문제를 해결했습니다. (b/159987480)lifecycle-livedata-core-ktx
(특히NullSafeMutableLiveData
)와 함께 번들로 제공되는 린트 검사의ObsoleteLintCustomCheck
가 수정되었습니다. (b/158699265)
버전 2.3.0-alpha05
2020년 6월 24일
androidx.lifecycle:lifecycle-*:2.3.0-alpha05
가 출시되었습니다. 버전 2.3.0-alpha05에 포함된 커밋을 확인하세요.
버그 수정
- 이제
LiveData
에서onActive()
또는onInactive()
의 중복 호출을 방지하여 재진입 사례를 더 잘 처리합니다. (b/157840298) - Android 스튜디오 4.1 카나리아 6 이상을 사용할 때 린트 검사가 실행되지 않는 문제가 수정되었습니다. (aosp/1331903)
버전 2.3.0-alpha04
2020년 6월 10일
androidx.lifecycle:lifecycle-*:2.3.0-alpha04
가 출시되었습니다. 버전 2.3.0-alpha04에 포함된 커밋을 확인하세요.
버그 수정
NonNullableMutableLiveData
린트 검사의 비정상 종료 문제가 수정되었습니다. (b/157294666)- 이제
NonNullableMutableLiveData
린트 검사에서 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()
를 호출하도록 허용하여 지연 직렬화를 지원하므로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
에서 출시된MutableLiveData
린트 검사가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 변경사항
- Application 인스턴스를 곧바로 사용할 수 없고
AndroidViewModel
지원이 필요하지 않은 사례를 더 효과적으로 지원하기 위해 이제SavedStateViewModelFactory
생성자에 nullApplication
을 전달할 수 있습니다. (aosp/1285740)
버그 수정
- 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
를 검색할 수 있습니다. 제대로 채우려면 Activity1.2.0-alpha01
및 Fragment1.3.0-alpha01
로 업그레이드해야 합니다.lifecycle-runtime-ktx
에서findViewTreeLifecycleOwner
Kotlin 확장 프로그램을 사용할 수 있습니다. (aosp/1182361, aosp/1182956) - Kotlin에서 null이 아닌 값으로 정의된
MutableLiveData
에서null
값을 설정할 경우 경고하는 새로운 린트 검사가 추가되었습니다. 이 검사는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에 포함된 커밋을 확인하세요.
이제 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)
생성자에 전달하면 Fragment1.2.0
을 사용할 때의 기능을 그대로 이용할 수 있습니다.lifecycle-extensions
아티팩트 지원 중단: 위의ViewModelProviders.of()
지원 중단과 함께 이 버전에서는lifecycle-extensions
의 마지막 API를 지원 중단으로 표시했기 때문에 이제 이 아티팩트는 완전히 지원 중단된 것으로 간주해야 합니다.lifecycle-extensions
의 향후2.3.0
출시가 없기 때문에lifecycle-extensions
대신 필요한 특정 Lifecycle 아티팩트(예를 들어LifecycleService
를 사용 중일 때는lifecycle-service
,ProcessLifecycleOwner
를 사용 중일 때는lifecycle-process
)를 사용할 것을 권장합니다.- Gradle 증분 주석 프로세서: Lifecycle의 주석 프로세서는 기본적으로 증분입니다.
자바 8 프로그래밍 언어로 작성한 앱에서는
DefautLifecycleObserver
를 대신 사용할 수 있습니다. 자바 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)
외부 기여
- 수정에 도움을 준 앤더스 얄버그 씨께 감사드립니다. (aosp/1156203)
- 인라인 실행 구현 상태를 검토한 Jetbrains의 세볼롯 톨스토피야토프 씨께 감사드립니다.
종속 항목 변경사항
- Lifecycle 확장 프로그램은 이제 Fragment
1.2.0-rc03
에 종속됩니다.
버전 2.2.0-rc02
2019년 11월 7일
androidx.lifecycle:lifecycle-*:2.2.0-rc02
가 출시되었습니다. 버전 2.2.0-rc02에 포함된 커밋을 확인하세요.
버그 수정
- 타겟 API가 29 미만일 때 API 28 이상을 실행하는 기기에 영향을 주는 라이브러리의 ProGuard 설정 관련 버그가 수정되었습니다. b/142778206을 참조하세요.
버전 2.2.0-rc01
2019년 10월 23일
androidx.lifecycle:lifecycle-*:2.2.0-rc01
이 출시되었습니다. 버전 2.2.0-rc01에 포함된 커밋을 확인하세요.
버그 수정
launchWhenCreated
및 관련 메서드가Dispatchers.Main.immediate
대신Dispatchers.Main
을 사용하여 연결된 수명 주기 메서드보다 한 프레임 늦게 실행되는 문제가 수정되었습니다. aosp/1145596을 참조하세요.
외부 기여
- 수정에 도움을 준 니클라스 안스만 씨께 감사드립니다. 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에 도입되어 Android 10 기기에서
ProcessLifecycleOwner
및 활동의LifecycleOwner
가 시작됨 및 재개됨으로 이동하는 순서 지정과 관련하여 발생하는 회귀 문제가 수정되었습니다. (aosp/1128132) - Lifecycle
2.2.0-alpha05
에 도입되어lifecycle-process
의2.0.0
또는2.1.0
버전을 사용할 때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
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 이제
liveData
의lifecycleScope
,whenCreated
,whenStarted
,whenResumed
,viewModelScope
및 기본 구현은Dispatchers.Main
대신Dispatchers.Main.immediate
를 사용합니다. b/139740492를 참조하세요.
외부 기여
Dispatchers.Main.immediate
로의 이전에 도움을 준 니클라스 안스만 씨께 감사드립니다. aosp/1106073을 참조하세요.
버전 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를 참조하세요.
버전 2.2.0-alpha02
2019년 7월 2일
androidx.lifecycle:*:2.2.0-alpha02
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
LiveDataScope.initialValue
는liveData
블록의 현재 생성된 값을 추적하는LiveDataScope.latestValue
로 대체되었습니다.timeout
매개변수를Duration
유형으로 수신하는liveData
빌더에 새 오버로드가 추가되었습니다.
버전 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
클래스의 생성자에서 수신할 수 있고, 기본적으로 Fragments 및 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
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
브레이킹 체인지
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
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 기본값을 허용하는
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
를 추가했습니다. 숨겨진GenericLifecycleObserver
클래스를 대신하는 공개 API입니다. LiveData.observe
메서드 및Transformations.*
메서드를 위한 ktx 확장을 추가했습니다.- 소스
LiveData
값이 변경될 때까지 값을 내보내지 않는 새로운 LiveData 객체를 생성하는Transformations.distinctUntilChanged
를 추가했습니다. - 확장 속성
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이 베타로 전환되었습니다. 이전 알파에서 추가된 api(예: 변환 및 관찰을 위한
liveData
확장 함수, 속성 위임을 통한ViewModel
초기화 등)는 안정화되었으며 변경되지 않습니다.
버전 2.1.0-alpha04
2019년 4월 3일
androidx.lifecycle:*:2.1.0-alpha04
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
- 주요 변경사항:
by viewModels()
및by activityViewModels()
뒤에 오는 기본 API가ViewModelStoreOwner
만 지원하지 않고ViewModelStore
를 직접 지원하도록 변경되었습니다. aosp/932932를 참조하세요.
버전 2.1.0-alpha03
2019년 3월 13일
androidx.lifecycle:*:2.1.0-alpha03
이 출시되었습니다. 이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.
API 변경사항
ViewModelProvider.KeyedFactory
가 삭제되었습니다.ViewModelProvider.Factory
외에 두 번째 인터페이스는 Kotlinby viewmodels {}
의 속성 위임을 새로운 기능으로 포함하도록 작성되지 않았습니다. aosp/914133을 참조하세요.
버전 2.1.0-alpha02
2019년 1월 30일
androidx.lifecycle 2.1.0-alpha02
가 출시되었습니다.
API 변경사항
- 이제
LifecycleRegistry
는 현재 지원 중단된setState()
메서드를 대체하는setCurrentState()
메서드를 포함합니다. 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
객체를 생성합니다.- ViewModel에서 코루틴 지원: 확장 속성
ViewModel.viewModelScope
를 추가했습니다. create
메서드의key
및Class
를 수신하는 ViewModel의 팩토리ViewModelProvider.KeyedFactory
를 추가했습니다.
버전 2.0.0
버전 2.0.0
2018년 9월 21일
Lifecycle 2.0.0
이 출시되었으며 2.0.0-rc01
에서 ViewModel의 버그가 1개 수정되었습니다.
버그 수정
- 생성자를 잘못 삭제하는 ViewModel proguard 규칙이 수정되었습니다. b/112230489
버전 2.0.0-beta01
2018년 7월 2일
버그 수정
- 하위 인터페이스가 아닌 구현만 유지하도록 LifecycleObserver Proguard 규칙이 수정되었습니다. b/71389427
- 난독화와 축소를 허용하도록 ViewModel Proguard 규칙이 수정되었습니다.
AndroidX 이전 버전
후속 Lifecycle의 AndroidX 이전 버전의 경우 다음 종속 항목을 포함합니다.
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
를 사용하세요.ViewModel
및AndroidViewModel
인스턴스를 생성하는 데 적합한 정적Factory
를 가져오도록ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
정적 메서드가 추가되었습니다.