Lifecycle

수명 주기 인식 구성요소는 활동 및 프래그먼트와 같은 다른 구성요소의 수명 주기 상태 변경에 따라 작업을 실행합니다. 이러한 구성요소를 사용하면 잘 구성된 경량의 코드를 만들어 유지 관리가 더 쉬워집니다.

이 표에는 androidx.lifecycle 그룹의 모든 아티팩트가 나열됩니다.

아티팩트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
lifecycle-* 2.3.1 - - 2.4.0-alpha03
lifecycle-viewmodel-compose - - - 1.0.0-alpha07
이 라이브러리는 2021년 8월 4일에 최종 업데이트되었습니다.

종속 항목 선언

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

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Kotlin

Groovy

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

Kotlin

    dependencies {
        val lifecycle_version = "2.4.0-beta01"
        val 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")
    }
    

자바

Groovy

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

Kotlin

    dependencies {
        val lifecycle_version = "2.4.0-beta01"
        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")
    }
    

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 의견을 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

버전 2.4.0

버전 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을 허용하는 일반 ViewModelProvider를 허용합니다. (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에 포함된 커밋을 확인하세요.

새로운 기능

  • repeateOnLifecycleonStart()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)

외부 기여

버전 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-composeandroidx.navigation:navigation-composeandroidx.compose.compiler:compiler:1.0.0-beta04androidx.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() 컴포저블 및 LocalViewModelStoreOwnerandroidx.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를 서로 다른 스레드에서 액세스할 때 적절한 동기화가 설정되었는지 확인해야 합니다.
  • 수명 주기 상태 및 이벤트 도우미: State와 전환 방향을 고려하여 Event를 생성하도록 downFrom(State), downTo(State), upFrom(State), upTo(State)의 정적 도우미 메서드가 Lifecycle.Event에 추가되었습니다. Event에 따라 수명 주기에서 직접 전환하는 State를 제공하는 getTargetState() 메서드가 추가되었습니다.
  • withStateAtLeast: 수명 주기 상태를 대기하고 상태 변경 지점에서 정지되지 않는 코드 블록을 동기식으로 실행한 후 그 결과로 다시 시작하는 Lifecycle.withStateAtLeast API를 추가했습니다. 이러한 API는 정지된 코드 실행을 허용하지 않고 맞춤 디스패처를 사용하지 않으므로 기존의 when* 메서드와 다릅니다. (aosp/1326081)
  • ViewTree API: 새 ViewTreeLifecycleOwner.get(View)ViewTreeViewModelStoreOwner.get(View) API를 사용하면 View 인스턴스를 고려하여 포함 LifecycleOwnerViewModelStoreOwner를 검색할 수 있습니다. Activity 1.2.0, Fragment 1.3.0, AppCompat 1.3.0-alpha01 이상으로 업그레이드해야 이 항목을 올바르게 채울 수 있습니다. findViewTreeLifecycleOwnerfindViewTreeViewModelStoreOwner Kotlin 확장 프로그램은 lifecycle-runtime-ktxlifecycle-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에 포함된 커밋을 확인하세요.

버그 수정

  • 이제 SavedStateHandlekeys() 메서드가 상태가 저장되기 전후에 일관됩니다. 이제 이전에 setSavedStateProvider()와 함께 사용된 키와 set()getLiveData()와 함께 사용된 키가 포함됩니다. (aosp/1517919, b/174713653)

외부 기여

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

버그 수정

문서 변경사항

  • 지정된 시간 제한 값 변경에 관한 세부정보를 포함하도록 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이 아닌 유형 매개변수를 사용하여 MutableLiveDatanull 값이 설정된 경우를 훨씬 더 많이 처리합니다. (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를 검색할 수 있습니다. Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05, AppCompat 1.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 생성자에 null Application을 전달할 수 있습니다. (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를 검색할 수 있습니다. Activity 1.2.0-alpha01Fragment 1.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) 생성자에 전달하면 Fragment 1.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-process2.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가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

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

새로운 기능

API 변경사항

  • ViewModelProviders.of()가 지원 중단되었습니다. Fragment 또는 FragmentActivity를 새 ViewModelProvider(ViewModelStoreOwner) 생성자에 전달하면 동일한 기능을 실행할 수 있습니다. aosp/1009889를 참조하세요.

버전 2.2.0-alpha02

2019년 7월 2일

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

API 변경사항

  • LiveDataScope.initialValueliveData 블록의 현재 생성된 값을 추적하는 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-rc011.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가 이제 Activity 1.1.0-alpha02, Fragment 1.2.0-alpha02Navigation 2.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 외에 두 번째 인터페이스는 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를 추가했습니다.
  • create 메서드의 keyClass를 수신하는 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.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를 사용하세요.
  • ViewModelAndroidViewModel 인스턴스를 생성하는 데 적합한 정적 Factory를 가져오도록 ViewModelProvider.AndroidViewModelFactory.getInstance(Application) 정적 메서드가 추가되었습니다.