Lifecycle

Các thành phần có nhận biết vòng đời (lifecycle) thực hiện các hành động để phản hồi trước một thay đổi trong trạng thái vòng đời của một thành phần khác, chẳng hạn như các hoạt động (activity) và mảnh (fragment). Các thành phần này giúp bạn tạo ra mã được tổ chức tốt hơn và thường nhẹ hơn, dễ duy trì hơn.

Bảng này liệt kê tất cả cấu phần phần mềm trong nhóm androidx.lifecycle.

Cấu phần phần mềm Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
lifecycle-* 2.5.1 2.6.0-rc01 - -
lifecycle-viewmodel-compose 2.5.1 2.6.0-rc01 - -
Lần gần nhất cập nhật thư viện này: ngày 22 tháng 2 năm 2023

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc vào Lifecycle, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun của mình:

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")
    }
    

Java

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")
    }
    

Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 2.6

Phiên bản 2.6.0-rc01

Ngày 22 tháng 2 năm 2023

Phát hành androidx.lifecycle:lifecycle-*:2.6.0-rc01. Phiên bản 2.6.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Tiện ích LiveData.distinctUntilChanged() hiện đặt value của LiveData được trả về nếu LiveData trước đó đã đặt một giá trị. Điều này không thay đổi hành vi quan sát – các giá trị cập nhật từ nguồn LiveData sẽ vẫn chỉ áp dụng sau khi bạn bắt đầu quan sát LiveData được trả về từ distinctUntilChanged(). (Ib482f)

Phiên bản 2.6.0-beta01

Ngày 8 tháng 2 năm 2023

Phát hành androidx.lifecycle:lifecycle-*:2.6.0-beta01. Phiên bản 2.6.0-beta01 bao gồm các thay đổi sau.

Hoạt động chuyển đổi trong Kotlin

  • Giờ đây, LifecycleOwner được viết bằng Kotlin. Đây là thay đổi không tương thích nguồn đối với các lớp được viết bằng Kotlin – giờ đây, chúng phải ghi đè thuộc tính lifecycle thay vì triển khai hàm getLifecycle() trước. (I75b4b, b/240298691)
  • ViewModelStoreOwner hiện đã có trong Kotlin. Đây là thay đổi không tương thích nguồn đối với các lớp được viết bằng Kotlin – giờ đây, chúng phải ghi đè thuộc tính viewModelStore thay vì triển khai hàm getViewModelStore() trước. (I86409, b/240298691)
  • Phần mở rộng Kotlin trong LifecycleOwner cung cấp trường lifecycleScope đã được chuyển sang cấu phần phần mềm lifecycle-common từ lifecycle-runtime-ktx. (I41d78, b/240298691)
  • Phần mở rộng Kotlin trong Lifecycle cung cấp trường coroutineScope đã được chuyển sang cấu phần phần mềm lifecycle-common từ lifecycle-runtime-ktx. (Iabb91, b/240298691)

Phiên bản 2.6.0-alpha05

Ngày 25 tháng 1 năm 2023

Phát hành androidx.lifecycle:lifecycle-*:2.6.0-alpha05. Phiên bản 2.6.0-alpha05 bao gồm các thay đổi sau.

Hoạt động chuyển đổi trong Kotlin

  • Giờ đây, Transformations được viết bằng Kotlin. Đây là thay đổi không tương thích với nguồn đối với lớp được viết bằng Kotlin trực tiếp sử dụng cú pháp như Transformations.map. Giờ đây, mã Kotlin phải dùng cú pháp phương thức phần mở rộng Kotlin mà trước đây chỉ dùng được khi có lifecycle-livedata-ktx. Khi sử dụng ngôn ngữ lập trình Java, chúng tôi không dùng phiên bản của các phương thức dùng phương thức androidx.arch.core.util.Function mà thay thế bằng phiên bản dùng Function1 của Kotlin. Thay đổi này vẫn duy trì khả năng tương thích với tệp nhị phân. (I8e14f)
  • Giờ đây, ViewTreeViewModelStoreOwner được viết bằng Kotlin. Đây là thay đổi không tương thích với nguồn đối với lớp được viết bằng Kotlin. Giờ đây, bạn phải nhập trực tiếp và dùng phương thức phần mở rộng Kotlin trên View của androidx.lifecycle.setViewTreeViewModelStoreOwnerandroidx.lifecycle.findViewTreeViewModelStoreOwner để đặt và tìm chủ sở hữu đã đặt trước đó. Phương thức này tương thích với tệp nhị phân và vẫn tương thích với nguồn triển khai được viết bằng ngôn ngữ lập trình Java. (Ia06d8, Ib22d8, b/240298691)
  • Giờ đây, giao diện HasDefaultViewModelProviderFactory được viết bằng Kotlin. Đây là thay đổi không tương thích với nguồn đối với lớp được viết bằng Kotlin. Giờ đây, các lớp này phải ghi đè các thuộc tính defaultViewModelProviderFactorydefaultViewModelCreationExtras thay vì triển khai các hàm tương ứng trước đó. (Iaed9c, b/240298691)
  • Giờ đây, Observer được viết bằng Kotlin. Phương thức onChanged() của mẫu này hiện dùng value tên cho tham số. (Iffef2, I4995e, b/240298691)
  • Giờ đây, AndroidViewModel, AbstractSavedStateViewModelFactory, LifecycleService, ServiceLifecycleDispatcherProcessLifecycleOwner được viết bằng Kotlin (I2e771, Ibae40, I160d7, I08884, I1cda7, b/240298691)

Phiên bản 2.6.0-alpha04

Ngày 11 tháng 1 năm 2023

Phát hành androidx.lifecycle:lifecycle-*:2.6.0-alpha04. Phiên bản 2.6.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Giờ đây, LiveData bao gồm một thuộc tính isInitialized mới cho biết đã có giá trị rõ ràng được đặt trên LiveData hay chưa, nhờ đó giúp bạn phân biệt giữa các trường hợp liveData.value trả về null do chưa có giá trị nào được đặt hay do có giá trị null rõ ràng. (Ibd018)

Các thay đổi về API

  • Các API collectAsStateWithLifecycle() của lifecycle-runtime-compose không còn ở trạng thái thử nghiệm. (I09d42, b/258835424)
  • Phương thức Lifecycle.launchWhenX và phương thức Lifecycle.whenX không còn được dùng vì trong một số trường hợp, việc sử dụng trình điều phối đang tạm dừng có thể dẫn đến lãng phí tài nguyên. Thay vào đó, bạn nên dùng Lifecycle.repeatOnLifecycle. (Iafc54, b/248302832)

Hoạt động chuyển đổi trong Kotlin

  • ViewTreeLifecycleOwner giờ đây được viết bằng Kotlin. Đây là sự thay đổi không tương thích nguồn đối với các lớp được viết bằng Kotlin – bạn giờ phải nhập trực tiếp và dùng phương thức mở rộng Kotlin trên View của androidx.lifecycle.setViewTreeLifecycleOwnerandroidx.lifecycle.findViewTreeLifecycleOwner để đặt và tìm chủ sở hữu đã đặt trước đó. Thao tác này sẽ thay thế phần mở rộng Kotlin trước đó trong lifecycle-runtime-ktx. Phần mở rộng này tương thích với tệp nhị phân và vẫn tương thích với nguồn triển khai bằng ngôn ngữ lập trình Java. (I8a77a, I5234e, b/240298691)
  • LiveDataReactiveStreams giờ được viết bằng Kotlin. Các phần mở rộng Kotlin trước đây trong lifecycle-reactivestreams-ktx đã được chuyển sang mô-đun lifecycle-reactivestreams và trở thành nền tảng chính cho mã được viết bằng Kotlin. Đây là sự thay đổi không tương thích với nguồn đối với mã được viết bằng Kotlin nếu bạn chưa sử dụng các API phương thức mở rộng Kotlin. (I2b1b9, I95d22, b/240298691)
  • DefaultLifecycleObserver, LifecycleEventObserver, Lifecycle, LifecycleRegistry, LifecycleObserverViewModelStore giờ đây được viết bằng Kotlin (Iadffd, (I60034), I8c52c, I9593d, I01fe1, I59a23, b/240298691)

Sửa lỗi

  • SavedStateHandle không còn gặp lỗi ClassCastException khi gọi get() bằng loại lớp không chính xác. (I6ae7c)

Phiên bản 2.6.0-alpha03

Ngày 24 tháng 10 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.6.0-alpha03. Phiên bản 2.6.0-alpha03 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố những quy tắc ràng buộc giữa các mô-đun Lifecycle khác nhau không hoạt động như dự kiến. (I18d0d, b/249686765)
  • Giờ đây, các lỗi do LifecycleRegistry.moveToState() gửi sẽ cung cấp thông báo lỗi hữu ích hơn để nhà phát triển biết về thành phần gây ra lỗi. (Idf4b2, b/244910446)

Phiên bản 2.6.0-alpha02

Ngày 7 tháng 9 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.6.0-alpha02. Phiên bản 2.6.0-alpha02 bao gồm các thay đổi sau.

Các thay đổi về API

  • MediatorLiveData giờ đây bao gồm một hàm khởi tạo để đặt giá trị ban đầu. (Ib6cc5, b/151244085)

Sửa lỗi

  • Các cấu phần phần mềm Lifecycle giờ đây bao gồm các quy tắc ràng buộc nhằm đảm bảo rằng tất cả các cấu phần phần mềm Lifecycle phụ thuộc lẫn nhau đều sử dụng cùng một phiên bản, tự động nâng cấp các phần phụ thuộc khác khi một phần phụ thuộc được nâng cấp. b/242871265
  • FlowLiveData.asFlow() nay tạo callbackFlow thay vì sử dụng phương thức triển khai riêng Channel để đảm bảo độ an toàn cho chuỗi cũng như bảo vệ ngữ cảnh. (I4a8b2, b/200596935)
  • Hàm asLiveData của FlowLiveData giờ đây sẽ giữ nguyên giá trị ban đầu của StateFlow khi tạo đối tượng LiveData mới. (I3f530, b/157380488)
  • Trong Lifecycle 2.5.1: Phương thức triển khai tuỳ chỉnh của AndroidViewModelFactory giờ đây sẽ gọi đúng hàm create(modelClass) khi sử dụng hàm khởi tạo có trạng thái với Lifecycle 2.4 trở lên (I5b315, b/238011621)

Phiên bản 2.6.0-alpha01

Ngày 29 tháng 6 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.6.0-alpha01. Phiên bản 2.6.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm một tiện ích mới vào StateFlowFlow của collectAsStateWithLifecycle thu thập từ các luồng và đại diện cho giá trị mới nhất của trạng thái này dưới dạng Trạng thái trong Compose theo cách nhận biết vòng đời. Luồng được thu thập và truyền phát mới được đặt thành giá trị của Trạng thái khi vòng đời ít nhất là trong một Lifecycle.State nhất định. Khi vòng đời giảm xuống dưới Lifecycle.State đó, quá trình thu thập luồng sẽ dừng lại và giá trị của Trạng thái không được cập nhật. (I1856e, b/230557927)

Phiên bản 2.5

Phiên bản 2.5.1

Ngày 27 tháng 7 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.1. Phiên bản 2.5.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Việc triển khai tuỳ chỉnh của AndroidViewModelFactory hiện đã gọi đúng hàm create(modelClass) khi sử dụng hàm khởi tạo AndroidViewModelFactory có trạng thái với Lifecycle 2.4+. (I5b315, b/238011621)

Phiên bản 2.5.0

Ngày 29 tháng 6 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0. Phiên bản 2.5.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 2.4.0

  • SavedStateHandle nay cung cấp một API getStateFlow() trả về một StateFlow của Kotlin để theo dõi các thay đổi về giá trị như một giải pháp thay thế cho việc sử dụng LiveData.

  • ViewModel CreationExtras – khi viết ViewModelProvider.Factory tuỳ chỉnh, bạn không còn cần mở rộng AndroidViewModelFactory hoặc AbstractSavedStateViewModelFactory để có quyền truy cập vào Application hoặc SavedStateHandle tương ứng. Thay vào đó, các trường này được cung cấp cho mọi lớp con ViewModelProvider.Factory dưới dạng CreationExtras thông qua tình trạng quá tải mới của create: create(Class<T>, CreationExtras). Các hoạt động bổ sung này được Hoạt động hoặc Mảnh tự động cung cấp khi bạn sử dụng Hoạt động 1.5.0Mảnh 1.5.0 tương ứng.

    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
        }
    }
    
  • Giờ đây, lifecycle-viewmodel cung cấp một Kotlin DSL viewModelFactory cho phép bạn xác định ViewModelProvider.Factory theo một hoặc nhiều trình khởi tạo lambda, mỗi trình chạy một lớp ViewModel mà nhà máy tuỳ chỉnh của bạn hỗ trợ, sử dụng CreationExtras làm nguồn dữ liệu chính.

    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 hiện cung cấp một API viewModel() lấy nhà máy lambda để tạo thực thể ViewModel mà không cần tạo ViewModelProvider.Factory tuỳ chỉnh.

    // 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)
    }
    
  • Tích hợp Trình tiết kiệm SavedStateHandle Compose – cấu phần phần mềm lifecycle-viewmodel-compose hiện chứa các API thử nghiệm mới trong SavedStateHandle.saveable cho phép rememberSaveable như hành vi được hỗ trợ bởi SavedStateHandle của `ViewModel.

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • Thêm một API addCloseable() và một hàm khởi tạo mới cho phép bạn thêm một hoặc nhiều đối tượng Closeable vào ViewModel sẽ bị đóng khi ViewModel bị xoá mà không cần thực hiện thao tác thủ công nào trong onCleared().

    Ví dụ: để tạo một phạm vi coroutine mà bạn có thể đưa vào ViewModel, nhưng kiểm soát thông qua chương trình kiểm thử, bạn có thể tạo một CoroutineScope triển khai Closeable:

    class CloseableCoroutineScope(
        context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate
    ) : Closeable, CoroutineScope {
        override val coroutineContext: CoroutineContext = context
        override fun close() {
            coroutineContext.cancel()
       }
    }
    

    Sau đó, bạn có thể dùng hàm này trong hàm khởi tạo ViewModel trong khi vẫn duy trì cùng một thời gian hoạt động như viewModelScope:

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

Thay đổi về hành vi

  • Việc cố gắng di chuyển Lifecycle.State từ INITIALIZED sang DESTROYED giờ đây sẽ luôn gửi một IllegalStateException bất kể Lifecycle có trình quan sát đính kèm hay không.
  • LifecycleRegistry nay sẽ xoá trình quan sát khi trình quan sát đạt trạng thái DESTROYED.

Phiên bản 2.5.0-rc02

Ngày 15 tháng 6 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-rc02. Phiên bản 2.5.0-rc02 bao gồm các thay đổi sau.

Sửa lỗi

  • ViewModelProvider sẽ không còn gặp sự cố khi kết hợp với phiên bản trước của phần phụ thuộc Vòng đời compileOnly trong các phiên bản 2.5 trở lên. (I81a66, b/230454566)

Phiên bản 2.5.0-rc01

Ngày 11 tháng 5 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-rc01. Phiên bản 2.5.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • MediatorLiveData.addSource() giờ sẽ gửi một NullPointerException khi chuyển một nguồn null thay vì lan truyền nguồn null tới các đối tượng tiếp nhận dữ liệu.(Ibd0fb, b/123085232)

Phiên bản 2.5.0-beta01

Ngày 20 tháng 4 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-beta01. Phiên bản 2.5.0-beta01 bao gồm các thay đổi sau.

Thay đổi API

  • Đã thêm uỷ quyền thuộc tính SavedStateHandle.saveable để sử dụng tên thuộc tính làm khoá cho trạng thái liên tục vào SavedStateHandle (I8bb86, b/225014345)

Sửa lỗi

  • Đã khắc phục vấn đề lồng một NavHost vào một NavHost khác trong thẻ điều hướng phụ ở dưới cùng sẽ dẫn đến IllegalStateException khi sử dụng nhiều ngăn xếp lui. (I11bd5, b/228865698)

Phiên bản 2.5.0-alpha06

Ngày 6 tháng 4 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-alpha06. Phiên bản 2.5.0-alpha06 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm nhiều MutableState thử nghiệm vào SavedStateHandle.saveable cho tương đương với rememberSaveable (I38cfe, b/224565154)

Thay đổi API

  • CreationExtras hiện là lớp trừu tượng thay vì bị đóng kín. (Ib8a7a)

Sửa lỗi

  • Đã khắc phục lỗi IllegalStateException: Already attached to lifecycleOwner do SavedStateHandleController gây ra. (I7ea47, b/215406268)

Phiên bản 2.5.0-alpha05

Ngày 23 tháng 3 năm 2022

androidx.lifecycle:lifecycle-*:2.5.0-alpha05 đã phát hành. Phiên bản 2.5.0-alpha05 bao gồm các thay đổi sau.

Tính năng mới

  • Mô-đun lifecycle-viewmodel-compose hiện cung cấp SavedStateHandleSaver, một API thử nghiệm đảm bảo các giá trị trong SavedStateHandle được tích hợp chính xác với trạng thái bản sao đã lưu mà rememberSaveable sử dụng. (Ia88b7, b/195689777)

Thay đổi API

  • Đã khắc phục vấn đề tương thích với Lifecycle 2.3 và các phiên bản Lifecycle mới hơn trong Java. (I52c8a, b/219545060)

Sửa lỗi

  • SavedStateViewFactory hiện hỗ trợ việc sử dụng CreationExtras ngay cả khi được khởi tạo bằng SavedStateRegistryOwner. Nếu bạn cung cấp thông số bổ sung, các đối số đã khởi tạo sẽ bị bỏ qua. (I6c43b, b/224844583)

Phiên bản 2.5.0-alpha04

Ngày 9 tháng 3 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-alpha04. Phiên bản 2.5.0-alpha04 bao gồm các thay đổi sau.

Thay đổi API

  • SavedStateHandle nay cung cấp một API getStateFlow() trả về một StateFlow Kotlin để theo dõi các thay đổi về giá trị như một giải pháp thay thế cho việc sử dụng LiveData. (Iad3ab, b/178037961)

Phiên bản 2.5.0-alpha03

Ngày 23 tháng 2 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-alpha03. Phiên bản 2.5.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm một API addCloseable() và một hàm khởi tạo mới cho phép bạn thêm một hoặc nhiều đối tượng Closeable vào ViewModel sẽ bị đóng khi ViewModel bị xoá mà không cần thực hiện thao tác thủ công nào trong onCleared(). (I55ea0)
  • lifecycle-viewmodel nay cung cấp một InitializerViewModelFactory cho phép bạn thêm lambda để xử lý các lớp ViewModel cụ thể, sử dụng CreationExtras làm nguồn dữ liệu chính. (If58fc, b/216687549)
  • lifecycle-viewmodel-compose nay cung cấp một API viewModel() lấy nhà máy lambda để tạo thực thể ViewModel mà không cần tạo ViewModelProvider.Factory tuỳ chỉnh. (I97fbb, b/216688927)

Thay đổi API

  • Giờ đây, bạn có thể tạo ViewModel với CreationExtras thông qua lifecycle-viewmodel-compose. (I08887, b/216688927)

Thay đổi về hành vi

  • Việc cố gắng di chuyển Lifecycle.State từ INITIALIZED sang DESTROYED giờ đây sẽ luôn cho ra một IllegalStateException bất kể Lifecycle có trình quan sát đính kèm hay không. (I7c390, b/177924329)
  • LifecycleRegistry nay sẽ xoá trình quan sát khi trình quan sát đạt trạng thái DESTROYED. (I4f8dd, b/142925860)

Phiên bản 2.5.0-alpha02

Ngày 9 tháng 2 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-alpha02. Phiên bản 2.5.0-alpha02 bao gồm các thay đổi sau.

Thay đổi API

  • SavedStateHandleSavedStateViewModelFactory đã được chuyển đổi sang Kotlin. Điều này đã cải thiện tính chất rỗng của các thuộc tính chung trong cả hai lớp. (Ib6ce2, b/216168263, I9647a, b/177667711)
  • Hiện tại, tham số hàm LiveData switchMap có thể có kết quả rỗng. (I40396, b/132923666)
  • Các phần mở rộng LiveData -ktx nay được chú thích bằng @CheckResult để thực thi việc kết quả được dùng khi gọi các hàm này. (Ia0f05, b/207325134)

Thay đổi về hành vi

  • SavedStateHandle nay lưu trữ chính xác giá trị mặc định khi không tồn tại giá trị nào cho khoá đã chỉ định. (I1c6ce, b/178510877)

Sửa lỗi

  • Từ Lifecycle 2.4.1: Cập nhật lifecycle-process để dựa vào Startup 1.1.1 nhằm đảm bảo nội dung sửa đổi ngăn ProcessLifecycleInitializer đưa ra StartupException có sẵn theo mặc định. (Ib01df, b/216490724)
  • Nay đã có một thông báo lỗi được cải thiện khi các lớp AndroidViewModel tuỳ chỉnh có các tham số theo thứ tự không chính xác và cố gắng tạo ViewModel. (I340f7, b/177667711)
  • Giờ đây, bạn có thể tạo mô hình hiển thị thông qua CreationExtras bằng cách sử dụng AndroidViewModelFactory mà không cần cài đặt ứng dụng. (I6ebef, b/217271656)

Phiên bản 2.5.0-alpha01

Ngày 26 tháng 1 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.5.0-alpha01. Phiên bản 2.5.0-alpha01 bao gồm các thay đổi sau.

ViewModel CreationExtras

Với bản phát hành này, chúng tôi đặt nền tảng để tái cấu trúc cách xây dựng ViewModel. Thay vì một tập hợp con các lớp ViewModelProvider.Factory cứng nhắc khi mỗi lớp con sẽ thêm chức năng bổ sung (cho phép tham số hàm khởi tạo Application thông qua AndroidViewModelFactory, cho phép tham số hàm khởi tạo SavedStateHandle thông qua SavedStateViewModelFactoryAbstractSavedStateViewModelFactory, v.v.), chúng tôi sẽ chuyển sang dạng thức nhà máy không có trạng thái (stateless factory) dựa vào một khái niệm mới là CreationExtras. (Ia7343, b/188691010, b/188541057)

Với thay đổi này, ViewModelProvider không còn gọi trực tiếp vào phương thức create(Class<T>) trước đó của ViewModelProvider.Factory. Thay vào đó, nó gọi vào một phần quá tải create mới: create(Class<T>, CreationExtras). Tức là bất kỳ cách triển khai trực tiếp nào của thực thể ViewModelProvider.Factory hiện đều có quyền truy cập vào từng CreationExtras mới sau:

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: String này cung cấp quyền truy cập vào khoá tuỳ chỉnh mà bạn đã chuyển tới ViewModelProvider.get().
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY cung cấp quyền truy cập vào lớp Application.
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY cung cấp quyền truy cập vào SavedStateRegistryOwner đang được dùng để tạo ViewModel này.
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY cung cấp quyền truy cập vào ViewModelStoreOwner đang được dùng để tạo ViewModel này.
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY cung cấp quyền truy cập vào Bundle của các đối số nên được dùng để xây dựng SavedStateHandle.

Các thành phần bổ sung này được cung cấp theo mặc định khi bạn sử dụng Activity 1.5.0-alpha01, Fragment 1.5.0-alpha01Navigation 2.5.0-alpha01. Nếu bạn sử dụng các phiên bản thư viện cũ hơn, CreationExtras của bạn sẽ trống – tất cả lớp con hiện có của ViewModelProvider.Factory đã được viết lại để hỗ trợ cả đường dẫn tạo cũ mà các phiên bản thư viện trước đây sử dụng cũng như đường dẫn CreationExtras sẽ được sử dụng về sau.

CreationExtras này cho phép bạn tạo một ViewModelProvider.Factory chỉ truyền thông tin cần thiết cho mỗi ViewModel mà không cần dựa vào hệ thống phân cấp nghiêm ngặt của lớp con 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
    }
}

Chúng tôi sử dụng hàm mở rộng Kotlin createSavedStateHandle() trên CreationExtras từ SavedStateHandleSupport để tạo SavedStateHandle chỉ cho một ViewModel cần giá trị đó. (Ia6654, b/188541057)

Bạn có thể cung cấp CreationExtras tuỳ chỉnh bằng cách ghi đè getDefaultViewModelCreationExtras() trong ComponentActivity hoặc Fragment, nhờ đó, bạn có thể sử dụng những dữ liệu này cho ViewModelProvider.Factory tuỳ chỉnh dưới dạng nội dung được chèn hỗ trợ. Những thành phần bổ sung này sẽ tự động được cung cấp cho Nhà máy (Factory) tuỳ chỉnh của bạn khi được sử dụng trực tiếp với ViewModelProvider hoặc khi sử dụng phần mở rộng thuộc tính Kotlin của by viewModels()by activityViewModels(). (I79f2b, b/207012584, b/207012585, b/207012490)

Sửa lỗi

  • Khắc phục vấn đề về việc giá trị mặc định được cung cấp cho SavedStateHandle sẽ xuất hiện lại sau khi quá trình chấm dứt và tái tạo, ngay cả khi giá trị đó đã bị xoá khỏi SavedStateHandle. Do đó, SavedStateHandle sẽ không còn hợp nhất các giá trị mặc định và giá trị được khôi phục lại với nhau, thay vào đó chỉ sử dụng các giá trị được khôi phục làm nguồn đáng tin cậy. (I53a4b)

Phiên bản 2.4

Phiên bản 2.4.1

Ngày 9 tháng 2 năm 2022

Phát hành androidx.lifecycle:lifecycle-*:2.4.1. Phiên bản 2.4.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Điều chỉnh Lifecycle 2.5.0-alpha01 cho phiên bản cũ: Khắc phục được vấn đề giá trị mặc định được cung cấp cho một SavedStateHandle sẽ xuất hiện lại sau khi quá trình kết thúc và tái tạo, ngay cả khi giá trị cụ thể đó đã bị xoá khỏi SavedStateHandle. Do đó, SavedStateHandle sẽ không còn hợp nhất các giá trị mặc định và giá trị được khôi phục lại với nhau, thay vào đó chỉ sử dụng các giá trị được khôi phục làm nguồn đáng tin cậy. (I53a4b)
  • lifecycle-process nay phụ thuộc vào Androidx Startup 1.1.1, bản đã khắc phục việc hồi quy trong tình huống sử dụng ProcessLifecycleInitializer sẽ gây ra StartupException. (b/216490724)

Phiên bản 2.4.0

Ngày 27 tháng 10 năm 2021

Phát hành androidx.lifecycle:lifecycle-*:2.4.0. Phiên bản 2.4.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 2.3.0

  • Ngừng sử dụng @OnLifecycleEvent. Bạn nên chuyển sang dùng LifecycleEventObserver hoặc DefaultLifecycleObserver.
  • Thêm thư viện androidx.lifecycle:lifecycle-viewmodel-compose. Thư viện này cung cấp thành phần kết hợp viewModel()LocalViewModelStoreOwner.
    • Thay đổi ngắt nguồn: ViewModelProvider đã được viết lại trong Kotlin. Phương thức ViewModelProvider.Factory.create đã ngừng chấp nhận giá trị chung rỗng.
  • API coroutine mới đã được thêm vào androidx.lifecycle:lifecycle-runtime-ktx:
  • Lifecycle.repeatOnLifecycle, API thực thi một khối mã trong coroutine khi Vòng đời (Lifecycle) ít nhất ở trong một trạng thái nhất định. Khối này sẽ huỷ và khởi chạy lại khi vòng đời di chuyển ra và vào trạng thái mục tiêu;
  • Flow.flowWithLifecycle, API phát ra giá trị từ Luồng (Flow) ở trên khi vòng đời ít nhất ở trong một trạng thái nhất định.
  • Di chuyển DefaultLifecycleObserver từ lifecycle.lifecycle-common-java8 sang lifecycle.lifecycle-common. lifecycle.lifecycle-common-java8 không cung cấp thêm chức năng nào ngoài lifecycle.lifecycle-common, vì vậy bạn có thể thay thế phần phụ thuộc bằng lifecycle.lifecycle-common.
  • API không phải coroutine từ lifecycle-viewmodel-ktx đã được chuyển đến mô-đun lifecycle-viewmodel.
  • lifecycle-process nay sử dụng androidx.startup để khởi chạy ProcessLifecycleOwner.

    Trước đây, việc này do androidx.lifecycle.ProcessLifecycleOwnerInitializer thực hiện.

    Nếu đã sử dụng tools:node="remove" trên ContentProvider đang dùng để khởi chạy vòng đời xử lý trước đây, bạn cần thực hiện các thao tác sau.

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

    (hoặc)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Phiên bản 2.4.0-rc01

Ngày 29 tháng 9 năm 2021

androidx.lifecycle:lifecycle-*:2.4.0-rc01 được phát hành mà không có thay đổi nào từ Lifecycle 2.4.0-beta01. Phiên bản 2.4.0-rc01 bao gồm các thay đổi sau.

Phiên bản 2.4.0-beta01

Ngày 15 tháng 9 năm 2021

Phát hành androidx.lifecycle:lifecycle-*:2.4.0-beta01. Phiên bản 2.4.0-beta01 bao gồm các thay đổi sau.

Thay đổi API

  • Ngừng sử dụng @OnLifecycleEvent. Bạn nên chuyển sang dùng LifecycleEventObserver hoặc DefaultLifecycleObserver. (I5a8fa)
  • Di chuyển DefaultLifecycleObserver từ androidx.lifecycle.lifecycle-common-java8 sang androidx.lifecycle.lifecycle-common. androidx.lifecycle.lifecycle-common-java8 không cung cấp thêm chức năng nào ngoài androidx.lifecycle.lifecycle-common, vì vậy bạn có thể thay thế phần phụ thuộc bằng androidx.lifecycle.lifecycle-common. (I021aa)
  • Chuyển API không phải coroutine từ lifecycle-viewmodel-ktx sang mô-đun lifecycle-viewmodel. (I6d5b2)

Đóng góp bên ngoài

  • Cảm ơn dmitrilc đã khắc phục một loại trong tài liệu ViewModel! (#221)

Phiên bản 2.4.0-alpha03

Ngày 4 tháng 8 năm 2021

Phát hành androidx.lifecycle:lifecycle-*:2.4.0-alpha03. Phiên bản 2.4.0-alpha03 bao gồm các thay đổi sau.

Thay đổi API

  • Thay đổi ngắt nguồn: ViewModelProvider đã được viết lại trong Kotlin. Phương thức ViewModelProvider.Factory.create đã ngừng chấp nhận giá trị chung rỗng. (I9b9f6)

Thay đổi về hành vi

  • Lifecycle.repeatOnLifecycle: block nay luôn được gọi tuần tự khi thực thi lặp lại. (Ibab33)

Đóng góp bên ngoài

  • Cảm ơn chao2zhang đã chỉnh sửa đoạn mã trong tài liệu repeatOnLifecycle. #205.

Phiên bản 2.4.0-alpha02

Ngày 16 tháng 6 năm 2021

Phát hành androidx.lifecycle:lifecycle-*:2.4.0-alpha02. Phiên bản 2.4.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm một lượt kiểm tra tìm lỗi mã nguồn (lint) RepeatOnLifecycleWrongUsage mới vào lifecycle-runtime-ktx, giúp phát hiện khi sử dụng sai repeateOnLifecycle trong onStart() hoặc onResume(). (706078, b/187887400)

Các thay đổi về API

  • API LifecycleOwner.addRepeatingJob đã bị xoá và thay vào đó là Lifecycle.repeatOnLifecycle phù hợp với chức năng đồng thời có cấu trúc và dễ hiểu hơn. (I4a3a8)
  • Chuyển ProcessLifecycleInitializer sang chế độ công khai để các androidx.startup.Initializer khác có thể sử dụng những phần này làm phần phụ thuộc. (I94c31)

Sửa lỗi

  • Khắc phục lỗi kiểm tra tìm lỗi mã nguồn NullSafeMutableLiveData khi trường có đối tượng sửa đổi. (#147, b/183696616)
  • Khắc phục một vấn đề khác về việc kiểm tra tìm lỗi mã nguồn NullSafeMutableLiveData khi sử dụng thuộc tính chung. (#161, b/184830263)

Đóng góp bên ngoài

  • Cảm ơn maxsav đã cải thiện hoạt động kiểm tra tìm lỗi mã nguồn NullSafeMutableLiveData. (#147, b/183696616)
  • Cảm ơn maxsav đã cải thiện hoạt động kiểm tra tìm lỗi mã nguồn NullSafeMutableLiveData. (#161, b/184830263)

Phiên bản 2.4.0-alpha01

Ngày 24 tháng 3 năm 2021

Phát hành androidx.lifecycle:lifecycle-*:2.4.0-alpha01. Phiên bản 2.4.0-alpha01 bao gồm các thay đổi sau.

Thay đổi về hành vi

  • lifecycle-process nay sử dụng androidx.startup để khởi chạy ProcessLifecycleOwner.

    Trước đây, việc này do androidx.lifecycle.ProcessLifecycleOwnerInitializer thực hiện.

    Nếu đã sử dụng tools:node="remove" trên ContentProvider đang dùng để khởi chạy vòng đời xử lý trước đây, bạn cần thực hiện các thao tác sau.

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

    (hoặc)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

Thay đổi API

  • Thêm một API Flow.flowWithLifecycle phát ra giá trị từ Luồng (Flow) ở trên khi vòng đời ít nhất ở trong một trạng thái nhất định sử dụng API Lifecycle.repeatOnLifecycle. Đây là phiên bản thay thế cho API LifecycleOwner.addRepeatinJob mới. (I0f4cd)

Sửa lỗi

  • Từ Lifecycle 2.3.1: Quy tắc tìm lỗi mã nguồn NonNullableMutableLiveData nay có thể phân biệt đúng cách giữa các biến trường có giá trị rỗng riêng biệt. (b/169249668)

Lifecycle Viewmodel Compose Phiên bản 1.0.0

Phiên bản 1.0.0-alpha07

Ngày 16 tháng 6 năm 2021

Phát hành androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.

Thay đổi về API có thể gây lỗi

  • viewModel() nay lấy một ViewModelStoreOwner không bắt buộc, giúp làm việc với các chủ sở hữu không phải LocalViewModelStoreOwner dễ dàng hơn. Ví dụ: giờ đây bạn có thể sử dụng viewModel(navBackStackEntry) để truy xuất ViewModel được liên kết với một biểu đồ điều hướng cụ thể. (I2628d, b/188693123)

Phiên bản 1.0.0-alpha06

Ngày 2 tháng 6 năm 2021

Phát hành androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.

Cập nhật để tương thích với Compose phiên bản 1.0.0-beta08.

Phiên bản 1.0.0-alpha05

Ngày 18 tháng 5 năm 2021

Phát hành androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.

Tính năng mới

  • Cập nhật để tương thích với Compose phiên bản 1.0.0-beta07.

Sửa lỗi

  • Các tệp AndroidManifest từ ui-test-manifest và ui-tooling-data hiện đã tương thích với Android 12 (I6f9de, b/184718994)

Phiên bản 1.0.0-alpha04

Ngày 7 tháng 4 năm 2021

Phát hành androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.

Thay đổi về phần phụ thuộc

  • Phiên bản này cho phép androidx.hilt:hilt-navigation-composeandroidx.navigation:navigation-compose đồng bộ hoá các phần phụ thuộc trên androidx.compose.compiler:compiler:1.0.0-beta04androidx.compose.runtime:runtime:1.0.0-beta04. Đối với 1.0.0, trình biên dịch và thời gian chạy bắt buộc phải khớp nhau.

Phiên bản 1.0.0-alpha03

Ngày 10 tháng 3 năm 2021

Phát hành androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Thay đổi API

  • LocalViewModelStoreOwner.current nay trả về một ViewModelStoreOwner rỗng để xác định xem ViewModelStoreOwner có dùng được trong bản Compose hiện tại hay không. Các API đòi hỏi phải có ViewModelStoreOwner, chẳng hạn như viewModel()NavHost, vẫn sẽ có ngoại lệ nếu bạn không đặt ViewModelStoreOwner. (Idf39a)

Lifecycle-Viewmodel-Compose Phiên bản 1.0.0-alpha02

Ngày 24 tháng 2 năm 2021

Phát hành androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Thay đổi API

  • LocalViewModelStoreOwner nay có một hàm provides mà bạn có thể dùng với CompositionLocalProvider, thay thế API asProvidableCompositionLocal(). (I45d24)

Lifecycle-Viewmodel-Compose Phiên bản 1.0.0-alpha01

Ngày 10 tháng 2 năm 2021

Phát hành androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Thành phần kết hợp viewModel()LocalViewModelStoreOwner đã được di chuyển từ androidx.compose.ui.viewinterop sang cấu phần phần mềm này trong gói androidx.lifecycle.viewmodel.compose. (I7a374)

Phiên bản 2.3.1

Lifecycle Phiên bản 2.3.1

Ngày 24 tháng 3 năm 2021

Phát hành androidx.lifecycle:lifecycle-*:2.3.1. Phiên bản 2.3.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Quy tắc tìm lỗi mã nguồn NonNullableMutableLiveData nay có thể phân biệt đúng cách giữa các biến trường có giá trị rỗng riêng biệt. (b/169249668)

Phiên bản 2.3.0

Phiên bản 2.3.0

Ngày 10 tháng 2 năm 2021

Phát hành androidx.lifecycle:lifecycle-*:2.3.0. Phiên bản 2.3.0 bao gồm các thay đổi sau.

Các thay đổi lớn từ phiên bản 2.2.0

  • Hỗ trợ SavedStateHandle cho các lớp không đóng gói được: SavedStateHandle nay hỗ trợ tính năng chuyển đổi tuần tự từng phần bằng cách cho phép bạn gọi setSavedStateProvider() cho một khoá nhất định, cung cấp một SavedStateProvider sẽ nhận lệnh gọi lại saveState() khi SavedStateHandle được yêu cầu lưu trạng thái. Xem nội dung Lưu các lớp không đóng gói được.
  • Thực thi hành vi trong vòng đời:
    • LifecycleRegistry giờ đây thực thi DESTROYED dưới dạng một trạng thái đầu cuối.
    • LifecycleRegistry giờ đây xác minh rằng các phương thức được gọi trên chuỗi chính. Đó luôn là yêu cầu bắt buộc đối với vòng đời của các hoạt động, mảnh, v.v. Việc bổ sung trình quan sát từ các luồng không phải luồng chính dẫn đến việc khó nắm bắt được sự cố trong thời gian chạy. Đối với các đối tượng LifecycleRegistry do các thành phần của riêng bạn sở hữu, bạn có thể chọn không sử dụng một cách rõ ràng bằng cách dùng LifecycleRegistry.createUnsafe(...), nhưng sau đó bạn phải đảm bảo rằng việc đồng bộ hoá phù hợp sẽ được thực hiện khi LifecycleRegistry này được truy cập qua luồng (thread) khác.
  • Trình trợ giúp sự kiện và trạng thái vòng đời: Thêm các phương thức trợ giúp tĩnh downFrom(State), downTo(State), upFrom(State), upTo(State) vào Lifecycle.Event để tạo Event khi có State và hướng chuyển đổi. Thêm phương thức getTargetState() cung cấp State mà Lifecycle hoạt động sẽ chuyển đổi trực tiếp theo Event.
  • withStateAtLeast: Thêm các API Lifecycle.withStateAtLeast chờ trạng thái vòng đời và chạy đồng bộ một khối mã không tạm ngưng tại thời điểm thay đổi trạng thái, sau đó tiếp tục với kết quả đó. Các API này khác với các phương thức when* hiện có vì các API này không cho phép chạy mã tạm ngưng và không sử dụng trình điều phối tuỳ chỉnh. (aosp/1326081)
  • API ViewTree: API ViewTreeLifecycleOwner.get(View)ViewTreeViewModelStoreOwner.get(View) mới cho phép bạn truy xuất LifecycleOwnerViewModelStoreOwner chứa tương ứng, khi có một thực thể View. Bạn phải nâng cấp lên Activity 1.2.0Fragment 1.3.0AppCompat 1.3.0-alpha01 trở lên để thông tin được điền sẵn chính xác. Tiện ích Kotlin của findViewTreeLifecycleOwnerfindViewTreeViewModelStoreOwner lần lượt có sẵn trong lifecycle-runtime-ktxlifecycle-viewmodel-ktx.
  • Ngừng cung cấp tiện ích Kotlin LiveData.observe(): Tiện ích Kotlin LiveData.observe() cần thiết để sử dụng cú pháp lambda nay không được dùng nữa vì không cần thiết khi sử dụng Kotlin 1.4.

Phiên bản 2.3.0-rc01

Ngày 16 tháng 12 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-rc01. Phiên bản 2.3.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Phương thức keys() của SavedStateHandle hiện đã nhất quán trước và sau khi lưu trạng thái – hiện đã bao gồm các khoá dùng trước đó với setSavedStateProvider() ngoài các khoá dùng với set()getLiveData(). (aosp/1517919, b/174713653)

Đóng góp bên ngoài

Phiên bản 2.3.0-beta01

Ngày 1 tháng 10 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-beta01. Phiên bản 2.3.0-beta01 bao gồm các thay đổi sau.

Thay đổi API

  • Phần mở rộng về Kotlin LiveData.observe() cần thiết để sử dụng cú pháp lambda nay không được dùng nữa vì không cần thiết khi sử dụng Kotlin 1.4. (I40d3f)

Sửa lỗi

Thay đổi về tài liệu

  • Trình tạo liveData và tài liệu asLiveData() đã được cập nhật để cung cấp thông tin chi tiết về việc thay đổi các giá trị thời gian chờ cụ thể. (aosp/1122324)

Phiên bản 2.3.0-alpha07

Ngày 19 tháng 8 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-alpha07. Phiên bản 2.3.0-alpha07 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố xảy ra trong bước kiểm tra tìm lỗi mã nguồn NullSafeMutableLiveData. (aosp/1395367)

Phiên bản 2.3.0-alpha06

Ngày 22 tháng 7 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-alpha06. Phiên bản 2.3.0-alpha06 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm các phương thức trợ giúp tĩnh của downFrom(State), downTo(State), upFrom(State), upTo(State) vào Lifecycle.Event để tạo Event khi có một State và hướng chuyển đổi. Thêm phương thức getTargetState() cung cấp State mà Lifecycle hoạt động sẽ chuyển đổi trực tiếp theo Event. (I00887)
  • Thêm các API Lifecycle.withStateAtLeast chờ trạng thái vòng đời và chạy đồng bộ một khối mã không tạm ngưng tại thời điểm thay đổi trạng thái, sau đó tiếp tục với kết quả đó. Các API này khác với các phương thức when* hiện có vì các API này không cho phép chạy mã tạm ngưng và không sử dụng trình điều phối tuỳ chỉnh. (aosp/1326081)

Thay đổi về hành vi

  • LifecycleRegistry giờ đây thực thi DESTROYED dưới dạng một trạng thái đầu cuối. (I00887)
  • LifecycleRegistry giờ đây xác minh rằng các phương thức được gọi trên chuỗi chính. Đó luôn là yêu cầu bắt buộc đối với vòng đời của các hoạt động, mảnh, v.v. Việc bổ sung trình quan sát từ các luồng không phải luồng chính dẫn đến việc khó nắm bắt được sự cố trong thời gian chạy. Đối với các đối tượng LifecycleRegistry do các thành phần của riêng bạn sở hữu, bạn có thể chọn không tham gia một cách rõ ràng bằng cách sử dụng LifecycleRegistry.createUnsafe(...), nhưng sau đó bạn phải đảm bảo rằng việc đồng bộ hoá phù hợp sẽ được thực hiện khi LifecycleRegistry này được truy cập từ chuỗi (Ie7280, b/137392809)

Sửa lỗi

  • Khắc phục sự cố trong NullSafeMutableLiveData. (b/159987480)
  • Sửa một ObsoleteLintCustomCheck cho các lượt kiểm tra tìm lỗi mã nguồn đi kèm lifecycle-livedata-core-ktx (và cụ thể là NullSafeMutableLiveData). (b/158699265)

Phiên bản 2.3.0-alpha05

Ngày 24 tháng 6 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-alpha05. Phiên bản 2.3.0-alpha05 bao gồm các thay đổi sau.

Sửa lỗi

  • Giờ đây, LiveData sẽ xử lý các trường hợp tái lập tốt hơn, tránh các lệnh gọi trùng lặp đến onActive() hoặc onInactive(). (b/157840298)
  • Khắc phục vấn đề không kiểm tra tìm lỗi mã nguồn được khi sử dụng Android Studio 4.1 Canary 6 trở lên. (aosp/1331903)

Phiên bản 2.3.0-alpha04

Ngày 10 tháng 6 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-alpha04. Phiên bản 2.3.0-alpha04 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố xảy ra trong bước kiểm tra tìm lỗi mã nguồn (Lint check) NonNullableMutableLiveData. (b/157294666)
  • Quy trình kiểm tra tìm lỗi mã nguồn NonNullableMutableLiveData hiện bao gồm nhiều trường hợp hơn đáng kể, trong đó giá trị null được đặt trên MutableLiveData có tham số loại không rỗng. (b/156002218)

Phiên bản 2.3.0-alpha03

Ngày 20 tháng 5 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-alpha03. Phiên bản 2.3.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • SavedStateHandle nay hỗ trợ tính năng chuyển đổi tuần tự từng phần bằng cách cho phép bạn gọi setSavedStateProvider() cho một khoá nhất định. Lệnh này cung cấp một SavedStateProvider để gọi lại saveState() khi SavedStateHandle được yêu cầu lưu trạng thái. (b/155106862)
  • API ViewTreeViewModelStoreOwner.get(View) mới cho phép bạn truy xuất ViewModelStoreOwner chứa khi có một thực thể View. Bạn cần nâng cấp lên Activity 1.2.0-alpha05, Fragment 1.3.0-alpha05AppCompat 1.3.0-alpha01 trở lên để thông tin được điền sẵn chính xác. Thêm một tiện ích Kotlin findViewModelStoreOwner() vào lifecycle-viewmodel-ktx. (aosp/1295522)

Sửa lỗi

  • Khắc phục vấn đề khiến tính năng kiểm tra tìm lỗi mã nguồn (lint) MutableLiveData phát hành trong Lifecycle 2.3.0-alpha01 không phát hành được cùng với cấu phần phần mềm lifecycle-livedata-core-ktx. (b/155323109)

Phiên bản 2.3.0-alpha02

Ngày 29 tháng 4 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-alpha02. Phiên bản 2.3.0-alpha02 bao gồm các thay đổi sau.

Thay đổi API

  • Hiện tại, SavedStateViewModelFactory đã cho phép bạn truyền một Application rỗng về hàm khởi tạo để hỗ trợ tốt hơn các trường hợp chưa có sẵn và không cần hỗ trợ AndroidViewModel. (aosp/1285740)

Sửa lỗi

  • Cải thiện hiệu suất khởi động nguội bằng cách tránh lỗi xác minh lớp trên API 28 trở xuống. (aosp/1282118)

Phiên bản 2.3.0-alpha01

Ngày 4 tháng 3 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.3.0-alpha01. Phiên bản 2.3.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • API ViewTreeLifecycleOwner.get(View) mới cho phép bạn truy xuất LifecycleOwner chứa khi có một thực thể View. Bạn phải nâng cấp lên Activity 1.2.0-alpha01Fragment 1.3.0-alpha01 để thông tin được điền sẵn chính xác. Tiện ích Kotlin findViewTreeLifecycleOwner có sẵn trong lifecycle-runtime-ktx. (aosp/1182361, aosp/1182956)
  • Thêm một chương trình kiểm tra tìm lỗi mã nguồn (lint) mới để cảnh báo bạn khi đặt giá trị null trên MutableLiveData đã được xác định trong Kotlin là giá trị không rỗng. Có sẵn khi sử dụng cấu phần phần mềm livedata-core-ktx hoặc livedata-ktx. (aosp/1154723, aosp/1159092)
  • Nay có một cấu phần phần mềm lifecycle-runtime-testing mới cung cấp một TestLifecycleOwner triển khai LifecycleOwner và cung cấp một Lifecycle biến đổi được và an toàn cho luồng (thread). (aosp/1242438)

Sửa lỗi

  • Cấu phần phần mềm lifecycle-runtime nay có một tên gói riêng biệt. (aosp/1187196)

Phiên bản 2.2.0

ViewModel-Savedstate Phiên bản 2.2.0

Ngày 5 tháng 2 năm 2020

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0. Phiên bản 2.2.0 bao gồm các thay đổi sau.

Lifecycle ViewModel SavedState nay có cùng phiên bản với các cấu phần phần mềm Lifecycle khác. Hành vi của 2.2.0 giống hệt với hành vi của 1.0.0.

Phiên bản 2.2.0

Ngày 22 tháng 1 năm 2020

Phát hành androidx.lifecycle:lifecycle-*:2.2.0. Phiên bản 2.2.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 2.1.0

  • Tích hợp coroutine Lifecycle: Cấu phần phần mềm lifecycle-runtime-ktx mới bổ sung khả năng tích hợp giữa các nhóm coroutine Lifecycle và Kotlin. lifecycle-livedata-ktx cũng đã được mở rộng để tận dụng các coroutine. Xem nội dung Sử dụng coroutine Kotlin với các Thành phần kiến trúc để biết thêm chi tiết.
  • Không dùng ViewModelProviders.of() nữa: ViewModelProviders.of() không còn được dùng nữa. Bạn có thể truyền Fragment hoặc FragmentActivity tới hàm khởi tạo ViewModelProvider(ViewModelStoreOwner) mới để sử dụng cùng một chức năng khi sử dụng Mảnh 1.2.0.
  • Không dùng cấu phần phần mềm lifecycle-extensions nữa: Với việc ngừng sử dụng ViewModelProviders.of() nói trên, bản phát hành này đánh dấu việc ngừng sử dụng API cuối cùng trong lifecycle-extensions và cấu phần phần mềm này hiện sẽ được coi là đã ngừng hoạt động. Bạn nên dựa vào các cấu phần phần mềm trong Lifecycle cụ thể mà bạn cần (chẳng hạn như lifecycle-service nếu bạn đang sử dụng LifecycleServicelifecycle-process nếu đang sử dụng ProcessLifecycleOwner) thay vì lifecycle-extensions vì sau này sẽ không còn bản phát hành 2.3.0 cho lifecycle-extensions nữa.
  • Trình xử lý chú giải gia tăng Gradle (Gradle Incremental Annotation Processor): Trình xử lý chú giải của Lifecycle được tăng dần theo mặc định. Nếu ứng dụng của bạn được viết bằng ngôn ngữ lập trình Java 8, bạn có thể sử dụng DefautLifecycleObserver; và nếu ứng dụng đó được viết bằng ngôn ngữ lập trình Java 7, bạn có thể sử dụng LifecycleEventObserver.

Phiên bản 2.2.0-rc03

Ngày 4 tháng 12 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.2.0-rc03. Phiên bản 2.2.0-rc03 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục lỗi xảy ra khi một ViewModel mô phỏng được lưu trữ trong ViewModelStore và được truy vấn sau đó bằng nhà máy mặc định.
  • Khắc phục việc sử dụng Dispatchers.Main.immediate trong launchWhenCreated và các phương thức tương tự để được gọi đồng bộ trong sự kiện tương ứng trong vòng đời. (aosp/1156203)

Đóng góp bên ngoài

  • Cảm ơn Anders Järleber đã đóng góp nội dung sửa lỗi! (aosp/1156203)
  • Cảm ơn Vsevolod Tolstopyatov của Jetbrains đã xem xét việc triển khai biện pháp thực thi cùng dòng.

Thay đổi về phần phụ thuộc

  • Tiện ích cho vòng đời (lifecycle) nay phụ thuộc vào mảnh (fragment) 1.2.0-rc03.

Phiên bản 2.2.0-rc02

Ngày 7 tháng 11 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.2.0-rc02. Phiên bản 2.2.0-rc02 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục lỗi trong phần thiết lập Proguard của thư viện đã ảnh hưởng đến các thiết bị chạy API 28 trở lên nếu API mục tiêu dưới 29. (b/142778206)

Phiên bản 2.2.0-rc01

Ngày 23 tháng 10 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.2.0-rc01. Phiên bản 2.2.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục vấn đề launchWhenCreated và các phương thức liên quan sẽ chạy một khung muộn hơn phương thức liên kết trong vòng đời do sử dụng Dispatchers.Main thay vì Dispatchers.Main.immediate. (aosp/1145596)

Đóng góp bên ngoài

  • Cảm ơn Nicklas Ansman đã đóng góp nội dung sửa lỗi! (aosp/1145596)

Phiên bản 2.2.0-beta01

Ngày 9 tháng 10 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.2.0-beta01. Phiên bản 2.2.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục một phiên hồi quy ra mắt trong Lifecycle 2.2.0-alpha05 theo thứ tự ProcessLifecycleOwnerLifecycleOwner của hoạt động chuyển sang bắt đầu và tiếp tục trên thiết bị Android 10. (aosp/1128132)
  • Khắc phục một phiên hồi quy ra mắt trong Lifecycle 2.2.0-alpha05 sẽ gây ra NullPointerException khi sử dụng phiên bản 2.0.0 hoặc 2.1.0 của lifecycle-process. (b/141536990)

Phiên bản 2.2.0-alpha05

Ngày 18 tháng 9 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.2.0-alpha05. Phiên bản 2.2.0-alpha05 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục một tình huống tương tranh trong trình tạo dữ liệu trực tiếp coroutine. b/140249349

Phiên bản 2.2.0-alpha04

Ngày 5 tháng 9 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.2.0-alpha04. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • lifecycleScope, whenCreated, whenStarted, whenResumed, viewModelScope và hoạt động triển khai cơ bản của liveData nay sử dụng Dispatchers.Main.immediate thay vì Dispatchers.Main. (b/139740492)

Đóng góp bên ngoài

  • Cảm ơn Nicklas Ansman đã đóng góp vào việc chuyển sang Dispatchers.Main.immediate! (aosp/1106073)

Phiên bản 2.2.0-alpha03

Ngày 7 tháng 8 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.2.0-alpha03. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

Thay đổi về API

  • Ngừng sử dụng ViewModelProviders.of(). Bạn có thể truyền Fragment hoặc FragmentActivity tới hàm khởi tạo ViewModelProvider(ViewModelStoreOwner) mới để sử dụng cùng một chức năng. (aosp/1009889)

Phiên bản 2.2.0-alpha02

Ngày 2 tháng 7 năm 2019

Phát hành androidx.lifecycle:*:2.2.0-alpha02. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Thay đổi về API

  • Thay thế LiveDataScope.initialValue bằng LiveDataScope.latestValue, giúp theo dõi giá trị phát ra hiện tại của khối liveData.
  • Thêm quá tải (overload) mới vào trình tạo liveData nhận được tham số timeout dưới dạng Duration

Phiên bản 2.2.0-alpha01

Ngày 7 tháng 5 năm 2019

Phát hành androidx.lifecycle:*:2.2.0-alpha01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Bản phát hành này bổ sung các tính năng mới hỗ trợ thêm các coroutine Kotlin cho Lifecycle và LiveData. Bạn có thể xem tài liệu chi tiết tại đây.

ViewModel-SavedState Phiên bản 1.0.0

Phiên bản 1.0.0

Ngày 22 tháng 1 năm 2020

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0. Phiên bản 1.0.0 bao gồm các thay đổi sau.

Tính năng quan trọng trong phiên bản 1.0.0

  • Thêm lớp SavedStateHandle mới. Chính sách này cho phép các lớp ViewModel của bạn truy cập và đóng góp vào trạng thái đã lưu. Đối tượng này có thể được nhận trong hàm khởi tạo của lớp ViewModel và nhà máy do các mảnh cung cấp theo mặc định. AppCompatActivity sẽ tự động chèn SavedStateHandle.
  • Thêm AbstractSavedStateViewModelFactory. Thuộc tính này cho phép bạn tạo nhà máy tuỳ chỉnh cho ViewModel cũng như cấp quyền truy cập vào SavedStateHandle.

ViewModel-Savedstate Phiên bản 1.0.0-rc03

Ngày 4 tháng 12 năm 2019

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03. Phiên bản 1.0.0-rc03 bao gồm các thay đổi sau.

Thay đổi về phần phụ thuộc

  • Lifecycle ViewModel SavedState nay tuỳ thuộc vào Lifecycle 2.2.0-rc03.

Viewmodel-Savedstate Phiên bản 1.0.0-rc02

Ngày 7 tháng 11 năm 2019

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02. Phiên bản 1.0.0-rc02 bao gồm các thay đổi sau.

Thay đổi về phần phụ thuộc

  • Nay phụ thuộc vào vòng đời của 2.2.0-rc02.

XemModel-SavedState Phiên bản 1.0.0-rc01s

Ngày 23 tháng 10 năm 2019

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 được phát hành mà không có thay đổi nào từ 1.0.0-beta01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

ViewModel-Savedstate Phiên bản 1.0.0-beta01

Ngày 9 tháng 10 năm 2019

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục vấn đề truy cập vào SavedState ViewModel đã lưu lần đầu tiên trong Activity.onActivityResult() sẽ dẫn đến IllegalStateException. (b/139093676)
  • Khắc phục IllegalStateException khi sử dụng AbstractSavedStateViewModelFactory. (b/141225984)

ViewModel-SavedState Phiên bản 1.0.0-alpha05

Ngày 18 tháng 9 năm 2019

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.

Thay đổi về API

  • SavedStateViewModelFactory không còn mở rộng AbstractSavedStateViewModelFactorySavedStateHandle chỉ được tạo cho các ViewModel đã yêu cầu (aosp/1113593)

ViewModel-SavedState Phiên bản 1.0.0-alpha03

Ngày 7 tháng 8 năm 2019

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Thay đổi có thể gây lỗi

  • lifecycle-viewmodel-savedstate không còn phụ thuộc vào fragment, đồng thời các hàm khởi tạo SavedStateViewModelFactory(Fragment)SavedStateViewModelFactory(FragmentActivity) liên quan đã bị xoá. Thay vào đó, SavedStateViewModelFactory nay là trạng thái ban đầu của Activity 1.1.0-alpha02, Fragment 1.2.0-alpha02Navigation 2.2.0-alpha01. (b/135716331)

ViewModel-SavedState Phiên bản 1.0.0-alpha02

Ngày 2 tháng 7 năm 2019

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Thêm quá tải (overload) SavedStateHandle.getLiveData() chấp nhận một giá trị mặc định.

Thay đổi API

  • Đổi tên SavedStateVMFactory thành SavedStateViewModelFactory.
  • Đổi tên AbstractSavedStateVMFactory thành AbstractSavedStateViewModelFactory.

ViewModel-Savedstate Phiên bản 1.0.0-alpha01

Ngày 13 tháng 3 năm 2019

Phát hành androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01. Bạn có thể xem toàn bộ nhật ký thay đổi trong bản phát hành ban đầu này tại đây.

Tính năng mới

  • Bây giờ, ViewModels có thể đóng góp vào savedstate. Để làm điều đó, hãy sử dụng giá trị SavedStateVMFactory mới của nhà máy của viewmodel và ViewModel phải có một hàm khởi tạo nhận đối tượng SavedStateHandle dưới dạng tham số.

Phiên bản 2.1.0

Thay đổi quan trọng kể từ phiên bản 2.0.0

  • Thêm LifecycleEventObserver cho các trường hợp cần có luồng sự kiện trong vòng đời. Đây là một API công khai thay vì một lớp GenericLifecycleObserver ẩn.
  • Thêm tiện ích ktx cho các phương thức LiveData.observe và phương thức Transformations.*.
  • Thêm Transformations.distinctUntilChanged để tạo một đối tượng LiveData mới không phát ra giá trị cho đến khi giá trị nguồn LiveData được thay đổi.
  • Thêm tuỳ chọn hỗ trợ coroutine trong ViewModel bằng cách thêm thuộc tính tiện ích ViewModel.viewModelScope.

Phiên bản 2.1.0

Ngày 5 tháng 9 năm 2019

Phát hành androidx.lifecycle:lifecycle-*:2.1.0. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Phiên bản 2.1.0-rc01

Ngày 2 tháng 7 năm 2019

androidx.lifecycle:*:2.1.0-rc01 được phát hành mà không có thay đổi nào từ androidx.lifecycle:*:2.1.0-beta01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Phiên bản 2.1.0-beta01

Ngày 7 tháng 5 năm 2019

Phát hành androidx.lifecycle:*:2.1.0-beta01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Vòng đời được chuyển dần sang giai đoạn beta: api được giới thiệu trong các phiên bản alpha trước đó như chức năng mở rộng liveData để chuyển đổi và quan sát, khởi chạy ViewModel với tính năng uỷ quyền, đồng thời các tính năng khác đã ổn định và sẽ không thay đổi.

Phiên bản 2.1.0-alpha04

Ngày 3 tháng 4 năm 2019

Phát hành androidx.lifecycle:*:2.1.0-alpha04. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Thay đổi về API

  • Thay đổi có thể gây lỗi: API cơ sở đằng sau by viewModels()by activityViewModels() đã được thay đổi để hỗ trợ trực tiếp ViewModelStore, thay vì chỉ một ViewModelStoreOwner. (aosp/932932)

Phiên bản 2.1.0-alpha03

Ngày 13 tháng 3 năm 2019

Phát hành androidx.lifecycle:*:2.1.0-alpha03. Bạn có thể xem danh sách đầy đủ các thay đổi trong phiên bản này tại đây.

Thay đổi về API

  • Xoá ViewModelProvider.KeyedFactory. Giao diện thứ hai ngoài ViewModelProvider.Factory không thiết lập tốt bằng các tính năng mới dưới dạng uỷ quyền thuộc tính trong Kotlin by viewmodels {}. (aosp/914133)

Phiên bản 2.1.0-alpha02

Ngày 30 tháng 1 năm 2019

Phát hành androidx.lifecycle 2.1.0-alpha02.

Thay đổi về API

  • LifecycleRegistry nay chứa phương thức setCurrentState() thay thế phương thức setState() hiện không được dùng nữa. (aosp/880715)

Sửa lỗi

  • Khắc phục sự cố thực thể ViewModel mô phỏng sẽ gặp sự cố khi ViewModelStore chứa bị xoá. b/122273087

Phiên bản 2.1.0-alpha01

Ngày 17 tháng 12 năm 2018

Phát hành androidx.lifecycle 2.1.0-alpha01.

Tính năng mới

  • Thêm LifecycleEventObserver cho các trường hợp cần có luồng sự kiện trong vòng đời. Đây là một API công khai thay vì một lớp GenericLifecycleObserver ẩn.
  • Thêm tiện ích ktx cho các phương thức LiveData.observe và phương thức Transformations.*.
  • Thêm phương thức Transformations.distinctUntilChanged. Phương thức này tạo một đối tượng LiveData mới không phát ra giá trị cho đến khi thay đổi giá trị LiveData nguồn.
  • Hỗ trợ Coroutine trong ViewModels: thêm thuộc tính tiện ích ViewModel.viewModelScope.
  • Thêm ViewModelProvider.KeyedFactory, một nhà máy cho ViewModels nhận keyClass trong phương thức create.

Phiên bản 2.0.0

Phiên bản 2.0.0

Ngày 21 tháng 9 năm 2018

Lifecycle 2.0.0 được phát hành kèm theo một nội dung sửa lỗi từ 2.0.0-rc01 trong ViewModel.

Sửa lỗi

  • Khắc phục quy tắc bảo vệ ViewModel đã xoá không chính xác các hàm khởi tạo b/112230489

Phiên bản 2.0.0-beta01

Ngày 2 tháng 7 năm 2018

Sửa lỗi

  • Khắc phục quy tắc bảo vệ LifecycleObserver proguard để chỉ giữ một phương thức triển khai, chứ không phải giao diện phụ b/71389427
  • Khắc phục các quy tắc bảo vệ ViewModel để cho phép làm rối và rút gọn

Phiên bản trước AndroidX

Đối với các phiên bản trước AndroidX của Vòng đời (Lifecycle), hãy thêm các phần phụ thuộc sau:

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"
}

Phiên bản 1.1.1

Ngày 21 tháng 3 năm 2018

Chỉ có một thay đổi nhỏ: chuyển android.arch.core.util.Function từ arch:runtime sang arch:common. Điều này cho phép bạn sử dụng tiện ích này mà không cần phần phụ thuộc thời gian chạy, ví dụ: trong paging:common dưới đây.

lifecycle:common là phần phụ thuộc của lifecycle:runtime, vì vậy sự thay đổi này không ảnh hưởng trực tiếp đến lifecycle:runtime, mà chỉ ảnh hưởng đến các mô-đun phụ thuộc trực tiếp vào lifecycle:common, như trong cấu phần Paging (Phân trang).

Phiên bản 1.1.0

Ngày 22 tháng 1 năm 2018

Thay đổi về cách đóng gói

Hiện đã có các phần phụ thuộc mới nhỏ hơn nhiều:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

Thay đổi API

  • LifecycleActivityLifecycleFragment không dùng nữa hiện đã bị xoá – vui lòng sử dụng FragmentActivity, AppCompatActivity hoặc hỗ trợ Fragment.
  • Thêm chú thích @NonNull vào ViewModelProvidersViewModelStores
  • Ngừng sử dụng hàm khởi tạo ViewModelProviders – vui lòng sử dụng trực tiếp các phương thức tĩnh
  • ViewModelProviders.DefaultFactory không còn được dùng nữa. Vui lòng sử dụng ViewModelProvider.AndroidViewModelFactory
  • Phương thức ViewModelProvider.AndroidViewModelFactory.getInstance(Application) tĩnh được thêm vào để truy xuất Factory tĩnh thích hợp cho việc tạo các phiên bản ViewModelAndroidViewModel.