Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Lifecycle

수명 주기 인식 구성요소는 활동과 프래그먼트 같은 다른 구성요소의 수명 주기 상태 변경에 따라 작업을 수행합니다. 이러한 구성요소를 사용하면 잘 구성된 경량의 코드를 만들어 더욱 쉽게 유지할 수 있습니다. 자세한 내용은 참조 문서에서 확인하세요.

종속성 선언

Lifecycle에 종속성을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속성을 추가합니다.

dependencies {
        def lifecycle_version = "2.0.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-alpha03

2019년 8월 7일

androidx.lifecycle:lifecycle-*:2.2.0-alpha03이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

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이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

브레이킹 체인지

버전 2.2.0-alpha02

2019년 7월 2일

androidx.lifecycle:*:2.2.0-alpha02가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

API 변경사항

  • LiveDataScope.initialValueliveData 블록의 현재 방출된 값을 추적하는 LiveDataScope.latestValue로 대체했습니다.
  • timeout 매개변수를 Duration 유형으로 수신하는 liveData 빌더에 새 오버로드를 추가했습니다.

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-rc01androidx.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이 베타로 전환되었습니다. 이전 알파에서 추가된 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)

ViewModel Savedstate 버전 1.0.0-alpha01

2019년 3월 13일

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01이 출시되었습니다. 이 초기 릴리스의 전체 커밋 로그는 여기에서 확인할 수 있습니다.

새로운 기능

  • 이제 ViewModels가 savedstate에 기여할 수 있습니다. 이렇게 하려면 새로 추가된 viewmodel의 공장 SavedStateVMFactory를 사용하고 ViewModel에 SavedStateHandleobject를 매개변수로 수신하는 생성자가 있어야 합니다.

버전 2.1.0-alpha03

2019년 3월 13일

androidx.lifecycle:*:2.1.0-alpha03이 출시되었습니다. 이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.

API 변경사항

  • ViewModelProvider.KeyedFactory가 삭제되었습니다. ViewModelProvider.Factory 외에 두 번째 인터페이스가 Kotlin by 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 확장 속성을 추가했습니다.
  • ViewModelProvider.KeyedFactory, 즉 create 메서드에서 keyClass를 수신하는 ViewModel의 공장 설정을 추가했습니다.

버전 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일

약간의 변경사항 1개: android.arch.core.util.Functionarch: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삭제되었습니다. FragmentActivity, AppCompatActivity 또는 지원 Fragment를 사용하세요.
  • @NonNull 주석이 ViewModelProvidersViewModelStores에 추가되었습니다.
  • ViewModelProviders 생성자 지원이 중단되었습니다. 그 생성자의 정적 메서드를 직접 사용하세요.
  • ViewModelProviders.DefaultFactory의 지원이 중단되었습니다. 다음 메서드를 사용하세요. ViewModelProvider.AndroidViewModelFactory
  • 정적 ViewModelProvider.AndroidViewModelFactory.getInstance(Application) 메서드가 추가되어 ViewModelAndroidViewModel 인스턴스를 생성하는 데 적합한 정적 Factory를 가져올 수 있습니다.