Vòng đời
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.9.4 | - | 2.10.0-beta01 | - |
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - |
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.9.4" def arch_version = "2.2.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" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // 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.9.4" val arch_version = "2.2.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") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // 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.9.4" def arch_version = "2.2.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.9.4" val arch_version = "2.2.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.
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.10
Phiên bản 2.10.0-beta01
Ngày 22 tháng 10 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.10.0-beta01. Phiên bản 2.10.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
ViewModelStoreNavEntryDecoratorDefaultđã được đổi tên thànhViewModelStoreNavEntryDecoratorDefaults, có thêm chữ "s". (I6d27b, b/444447434)
Sửa lỗi
rememberLifecycleOwnersẽ không còn gặp sự cố nếu chủ sở hữu nhận được sự kiệnLifecycle.Event.ON_DESTROYtrước khi chuyển sangLifeycle.State.CREATED. (I6f98e, b/444594991)
Phiên bản 2.10.0-alpha05
Ngày 8 tháng 10 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.10.0-alpha05. Phiên bản 2.10.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
removeViewModelStoreOnPopCallback()hiện là một phần của đối tượngViewModelStoreNavEntryDecoratorDefault. Đây là nơi các nền tảng và hoạt động triển khai khác có thể gọi giá trị mặc định. (Ia1f23, b/444447434)- Tái cấu trúc
ViewModelStoreNavEntryDecoratortừ một hàm thành một lớp để phản ánh rõ hơn chức năng của lớp này dưới dạng một nhà máy choNavEntryDecorator, đồng thời đổi tên tham sốshouldRemoveViewModelStorecủa đối tượng trang trí thànhremoveViewModelStoreOnPopđể làm rõ rằng lệnh gọi lại này chỉ được gọi khi một mục được lấy ra khỏibackStack. (Iefdc5, b/444447434)
Phiên bản 2.10.0-alpha04
Ngày 24 tháng 9 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.10.0-alpha04. Phiên bản 2.10.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Tái cấu trúc thành phần kết hợp
LifecycleOwnerthànhrememberLifecycleOwner. Giờ đây, hàm này sẽ trả về trực tiếpLifecycleOwner. Để cung cấp chủ sở hữu này cho một thành phần phụ, hãy sử dụngCompositionLocalProvider. (Ic57f0, b/444446629) - Thêm các phần giữ chỗ KMP vào lifecycle-viewmodel-navigation3 để cho phép JetBrains cung cấp các nhánh điền vào những mục tiêu này và do đó hỗ trợ CMP. (I44a4c)
Phiên bản 2.10.0-alpha03
Ngày 27 tháng 8 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.10.0-alpha03. Phiên bản 2.10.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Cập nhật Compose lên phiên bản 1.9.0. (I2b9de)
Phiên bản 2.10.0-alpha02
Ngày 13 tháng 8 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.10.0-alpha02. Phiên bản 2.10.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
Giờ đây, thành phần kết hợp
LifecycleOwnercó thể tạo một vòng đời gốc độc lập. Bằng cách đặtparent = null(một cách rõ ràng), vòng đời mới sẽ hoạt động độc lập với mọi máy chủ lưu trữ (chẳng hạn nhưActivity,FragmenthoặcNavBackStackEntry). Vòng đời này bắt đầu ngay khi thành phần kết hợp tham gia vào thành phần và tự động bị huỷ khi rời khỏi thành phần. (I8dfbe, b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
Thay đổi về API
- Trong thành phần kết hợp
LifecycleOwner, tham sốparentLifecycleOwnerđã được đổi tên thànhparent. (I080bc)
Sửa lỗi
- Giờ đây, thành phần kết hợp
LifecycleOwnersẽ di chuyển vòng đời của nó sangDESTROYEDmột cách chính xác khi bị loại bỏ. Điều này giúp ngăn chặn các rò rỉ tiềm ẩn đối với mã bên ngoài giữ một tham chiếu đến vòng đời. (I9e5b7, b/433659048) - Di chuyển minSdk mặc định từ API 21 sang API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
Đóng góp bên ngoài
- Xoá các trường hỗ trợ nội bộ không cần thiết khỏi
LifecycleOwner. Cảm ơn Jake Wharton đã đóng góp. (Ideddb)
Phiên bản 2.10.0-alpha01
Ngày 30 tháng 7 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.10.0-alpha01. Phiên bản 2.10.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
Thêm một thành phần kết hợp
LifecycleOwnerđể cho phép tạo vòng đời có phạm vi ngay trong giao diện người dùng. Điều này hữu ích cho những thành phần cần quản lý vòng đời riêng một cách độc lập. Để biết ví dụ về cách Navigation3 tích hợp thành phần kết hợp mới này, hãy xem aosp/3708610. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
Thay đổi về API
- Thêm một hàm tạo của trình tạo cho
CreationExtras, cung cấp một API Kotlin thuận tiện và ngắn gọn hơn. (Iab2bd) - Thêm tính năng hỗ trợ gốc cho các loại có thể rỗng trong
SavedStateHandle.saved, giúp đơn giản hoá việc lưu và khôi phục các thuộc tính có thể rỗng. (I54d69, b/421325690) - Đánh dấu hàm khởi tạo
SavedStateHandlelà@VisibleForTesting. (Iff0e0, b/408002794)
Phiên bản 2.9
Phiên bản 2.9.4
Ngày 17 tháng 9 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.4. Phiên bản 2.9.4 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi không áp dụng trình bổ trợ Trình biên dịch Compose khiến các cấu phần phần mềm Lifecycle KMP bị hỏng. (Ie95bc, b/443096483, b/443965665)
Phiên bản 2.9.3
Ngày 27 tháng 8 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.3. Phiên bản 2.9.3 bao gồm các thay đổi sau.
Tính năng mới
- Thêm các mục tiêu Kotlin Multiplatform (KMP) mới vào các cấu phần phần mềm Lifecycle
*-compose. Lifecycle hiện hỗ trợ tổng cộng các nền tảng sau: JVM (Android và Máy tính), Native (Linux, iOS, watchOS, macOS, MinGW) và Web (JavaScript, WasmJS). (I0a0e4)
Sửa lỗi
- Cập nhật
androidx.annotationlên 1.9.1 (Ic9e4f, b/397701294)
Phiên bản 2.9.2
Ngày 16 tháng 7 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.2. Phiên bản 2.9.2 bao gồm các thay đổi sau.
Sửa lỗi
- Đã thêm các mục tiêu Kotlin Multiplatform (KMP) mới vào các cấu phần phần mềm Lifecycle. Lifecycle hiện hỗ trợ tổng cộng các nền tảng sau: JVM (Android và Máy tính), Native (Linux, iOS, watchOS, macOS, MinGW) và Web (JavaScript, WasmJS). Xin lưu ý rằng không có mục tiêu KMP mới nào được thêm vào cấu phần phần mềm
*-compose, vì điều này phụ thuộc vào bản phát hành ổn định của Compose 1.9. (I01cb8).
Thông tin cập nhật về phần phụ thuộc
- Lifecycle hiện phụ thuộc vào Chú thích
1.9.1để hỗ trợ các mục tiêu KMP mới (Ic9e4f, b/397701294).
Phiên bản 2.9.1
Ngày 4 tháng 6 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.1. Phiên bản 2.9.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi
SavedStateHandle.remove(key)không xoá các trạng tháiSavedStateHandle.getMutableStateFlow(key). (d5f939, b/418746333)
Phiên bản 2.9.0
Ngày 7 tháng 5 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.0. Phiên bản 2.9.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.8.0
- Một cấu phần phần mềm
androidx.lifecycle:lifecycle-viewmodel-testingKMP mới hiện đã có sẵn, cung cấp một lớpViewModelScenariođể kiểm thử riêngViewModels, có hỗ trợonClearedvàSavedStateHandlecũng như kiểm thử quy trình kết thúc và tạo lại thông quarecreate(). - Thêm
getMutableStateFlowvàoSavedStateHandleđể trả vềMutableStateFlow. Hàm mới này chỉ dành riêng cho khoá và không dùng được vớigetLiveData. Một trường hợp ngoại lệ sẽ xảy ra nếu bạn cố gắng sử dụng cả hai để truy cập vào cùng một trạng thái. CreationExtrashiện có các hàm nạp chồng toán tử tương tự như hàm map để cho phép thao tác theo cách thành ngữ đối với nội dung trong Kotlin. Thư viện này cho phép sử dụngin,+=và+vớiCreationExtras.
Hỗ trợ chuyển đổi tuần tự KotlinX
Với sự hỗ trợ của KotlinX Serialization được thêm vào SavedState
1.3.0, chúng tôi đã giới thiệusaved, một uỷ quyền thuộc tính trì hoãn, để giúp bạn dễ dàng lưu trữ các lớp@SerializabletrongSavedStateHandlevà tự động khôi phục các lớp đó khi quá trình bị gián đoạn và tạo lại. Xin lưu ý rằng uỷ quyềnsavedlà uỷ quyền trì hoãn và sẽ không gọi hàm lambdainithoặc lưu bất cứ nội dung nào vàoSavedStateHandlecho đến khi được truy cập.@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Kotlin Multiplatform
- Mô-đun
lifecycle-testinghiện tương thích với KMP, bao gồm cả các API nhưTestLifecycleOwner. - Mô-đun
lifecycle-viewmodel-savedstatehiện tương thích với KMP, bao gồm cả các API nhưSavedStateHandle. androidx.compose.ui.platform.LocalLifecycleOwnerhiện có trong nhóm tài nguyên chung.NewInstanceFactoryhiện đã có trên các mục tiêu JVM Desktop và Android.
Thay đổi về hành vi
- Trạng thái
Lifecycle.DESTROYEDlà trạng thái cuối cùng và mọi nỗ lực di chuyểnLifecycletừ trạng thái này sang bất kỳ trạng thái nào khác hiện sẽ dẫn đếnIllegalStateException. SavedStateHandlekhông còn bao gồm bất kỳSavedStateProvider.saveState()nào khiBundleđược trả về là trống.
Phiên bản 2.9.0-rc01
Ngày 23 tháng 4 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-rc01. Phiên bản 2.9.0-rc01 bao gồm các thay đổi sau.
Cảnh báo về khả năng tương thích của Lint API
- JetBrains đã thay đổi
KaCallableMemberCalltừ một lớp thành một giao diện, điều này làm mất khả năng tương thích nhị phân. Điều này có thể gây ra sự cố nếu phiên bản AGP của dự án khác với phiên bản dùng để biên dịch các lượt kiểm tra lỗi mã nguồn. Bản cập nhật này được thực hiện trong aosp/3577172 nhưng lại không có trong ghi chú phát hành. Chúng tôi sẽ làm rõ vấn đề này tại đây. Giải pháp được đề xuất: Cập nhật lên AGP ổn định mới nhất. Nếu bạn không thể cập nhật hoàn toàn, hãy dùngandroid.experimental.lint.versionđể điều chỉnh các quy trình kiểm tra lint cho phù hợp với phiên bản AGP của bạn – hãy xem phần Các thay đổi về hành vi của Compose Runtime để biết thông tin chi tiết.
Phiên bản 2.9.0-beta01
Ngày 9 tháng 4 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-beta01. Phiên bản 2.9.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
Lifecycle ViewModel Composehiện sử dụng cùng một chế độ thiết lập Đa nền tảng Kotlin như Compose Runtime 1.7.1 trở lên – các cấu phần phần mềm-desktophiện đã bị xoá và các cấu phần phần mềm-jvmStubsvà-linuxx64Stubsđã được thêm vào. Không có mục tiêu nào trong số này được dùng, chúng là các phần giữ chỗ để hỗ trợ các nỗ lực của Jetbrains Compose. (I5cb14, b/406592090)
Thông tin cập nhật về phần phụ thuộc
- Thư viện này hiện hướng đến cấp độ ngôn ngữ Kotlin 2.0 và yêu cầu KGP 2.0.0 trở lên. (Idb6b5)
Lifecycle ViewModel Composehiện phụ thuộc vào Compose 1.7.8. (I5cb14, b/406592090)
Phiên bản 2.9.0-alpha13
Ngày 26 tháng 3 năm 2025
androidx.lifecycle:lifecycle-*:2.9.0-alpha13 được phát hành mà không có thay đổi đáng kể nào. Phiên bản 2.9.0-alpha13 bao gồm các thay đổi sau.
Phiên bản 2.9.0-alpha12
Ngày 12 tháng 3 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha12. Phiên bản 2.9.0-alpha12 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm chú thích
@MainThreadvàoViewModelProvider.gettrong tất cả các nền tảng KMP được hỗ trợ. (I7e8dd, b/397736115) - Đổi tên
SavedState*DelegatesthànhSavedState*Delegate. (I8589b, b/399629301)
Phiên bản 2.9.0-alpha11
Ngày 26 tháng 2 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha11. Phiên bản 2.9.0-alpha11 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm tham số
SavedStateConfigvào các uỷ quyềnsaved()(I39b3a)
Phiên bản 2.9.0-alpha10
Ngày 12 tháng 2 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha10. Phiên bản 2.9.0-alpha10 bao gồm các thay đổi sau.
Thay đổi về API
- Chuyển
MutableStateSerializersangsavedstate-composetừlifecycle-viewmodel-compose. (I4f690, b/378895074)
Đóng góp bên ngoài
- Thêm một vấn đề mới về Lint để gọi
Lifecycle::currentStatetrong thành phần, thay vào đó, đề xuất sử dụngcurrentStateAsalue().valueđể đảm bảo rằng các thay đổi trong trạng thái Vòng đời sẽ gây ra quá trình kết hợp lại một cách chính xác. Cảm ơn Steven Schoen! (Iad484)
Phiên bản 2.9.0-alpha09
Ngày 29 tháng 1 năm 2025
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha09. Phiên bản 2.9.0-alpha09 bao gồm các thay đổi sau.
Tính năng mới
- Thêm
MutableStateSerializerđể chuyển đổiandroidx.compose.runtime.MutableStatethành chuỗi. (Idfc48, b/378895074)
Thay đổi về API
- Thay thế các hàm uỷ quyền
SavedStateHandle.saved()được nạp chồng bằng các tham số mặc định (Icd1c1) AbstractSavedStateViewModelFactorykhông được dùng nữa vì nó tạo ra mộtSavedStateHandlecho mọiViewModel, gây ra mức hao tổn không cần thiết. Hãy sử dụngViewModelProvider.FactoryvớiCreationExtras.createSavedStateHandlethay vì tạoViewModelhiệu quả hơn. (Ia920b, b/388590327)
Phiên bản 2.9.0-alpha08
Ngày 11 tháng 12 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha08. Phiên bản 2.9.0-alpha08 bao gồm các thay đổi sau.
Tính năng mới
- Thêm
ViewModelScenario.recreateđể mô phỏng một System Process Death (Quá trình hệ thống bị buộc tắt) nhằm tái tạoViewModelđang được kiểm thử và tất cả các thành phần liên quan. (Id6a69, b/381063087) - Giờ đây, các thực thể
LifecycleOwnervàViewModelStoreOwnerđược truy xuất thông qua APIfindViewTreetương ứng có thể được phân giải thông qua các thành phần mẹ rời rạc của một khung hiển thị, chẳng hạn nhưViewOverlay. Hãy xem ghi chú phát hành của core hoặc tài liệu trongViewTree.setViewTreeDisjointParentđể biết thêm thông tin về các thành phần hiển thị không liên kết. (I800f4)
Thay đổi về API
- Đặt tên và sắp xếp các gói nhất quán hơn với
SavedStateRegistryOwnerDelegate(I8c135, b/376026744)
Sửa lỗi
- Thư viện này hiện sử dụng chú giải về khả năng rỗng JSpecify, là loại chú giải sử dụng. Nhà phát triển Kotlin nên sử dụng đối số trình biên dịch sau đây để thực thi việc sử dụng chính xác:
-Xjspecify-annotations=strict(đây là đối số mặc định bắt đầu từ phiên bản 2.1.0 của trình biên dịch Kotlin). (Ie4340, b/326456246) - Trình tự xoá
ViewModel.onClearedtài liệu. (I586c7, b/363984116)
Phiên bản 2.9.0-alpha07
Ngày 13 tháng 11 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha07. Phiên bản 2.9.0-alpha07 bao gồm các thay đổi sau.
Khả năng tương thích của Kotlin Multiplatform
- Vòng đời
ViewModel SavedStatehiện đã tương thích với KMP. Điều này cho phép bạn sử dụngSavedStateHandletrong mã chung. (Ib6394, b/334076622)
Hỗ trợ chuyển đổi tuần tự KotlinX
Với sự hỗ trợ của KotlinX Serialization được thêm vào SavedState
1.3.0-alpha05, chúng tôi đã giới thiệusaved, một uỷ quyền thuộc tính trì hoãn, để giúp bạn dễ dàng lưu trữ các lớp@SerializabletrongSavedStateHandlevà tự động khôi phục các lớp đó khi quá trình bị gián đoạn và tạo lại. Xin lưu ý rằng uỷ quyềnsavedlà uỷ quyền trì hoãn và sẽ không gọi hàm lambdainithoặc lưu bất cứ nội dung nào vàoSavedStateHandlecho đến khi được truy cập. (I47a88, b/376026744)@Serializable data class Person(val firstName: String, val lastName: String) class MyViewModel(handle: SavedStateHandle) : ViewModel() { var person by handle.saved { Person("John", "Doe") } fun onPersonChanged(person: Person) { this.person = person } }
Thay đổi về API
- Thêm
getMutableStateFlowvàoSavedStateHandleđể trả vềMutableStateFlow. Hàm mới này chỉ dành riêng cho khoá và không dùng được vớigetLiveData. Một trường hợp ngoại lệ sẽ xảy ra nếu bạn cố gắng sử dụng cả hai để truy cập vào cùng một trạng thái. (I04a4f, b/375408415)
Phiên bản 2.9.0-alpha06
Ngày 30 tháng 10 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha06. Phiên bản 2.9.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về hành vi
- Trạng thái
Lifecycle.DESTROYEDlà trạng thái cuối cùng và mọi nỗ lực di chuyểnLifecycletừ trạng thái này sang bất kỳ trạng thái nào khác hiện sẽ dẫn đếnIllegalStateException. (I116c4, b/370577987) SavedStateHandlekhông còn bao gồm bất kỳSavedStateProvider.saveState()nào khiBundleđược trả về là trống. (I910b5, b/370577987)
Sửa lỗi
Lifecycle.eventFlowhiện hoàn tất chính xác khiLifecyclelàDESTROYED(I293b2, b/374043130)
Phiên bản 2.9.0-alpha05
Ngày 16 tháng 10 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha05 mà không có thay đổi đáng kể nào. Phiên bản 2.9.0-alpha05 bao gồm các thay đổi sau.
Phiên bản 2.9.0-alpha04
Ngày 2 tháng 10 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha04. Phiên bản 2.9.0-alpha04 bao gồm các thay đổi sau.
Kotlin Multiplatform
- Mô-đun
lifecycle-viewmodel-savedstatehiện được định cấu hình để tương thích với KMP nhằm chuẩn bị cho các API nhưSavedStateHandleđược cung cấp trong nhóm tài nguyên chung ở một bản phát hành trong tương lai. (I503ed, I48764, b/334076622)
Phiên bản 2.9.0-alpha03
Ngày 18 tháng 9 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha03. Phiên bản 2.9.0-alpha03 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Lifecycle
2.8.6: LỗiNullSafeMutableLiveDataLint đã cải thiện khả năng hỗ trợ cho truyền thông minh, tránh trường hợp nhận diện sai. (85fed6, b/181042665)
Thông tin cập nhật về phần phụ thuộc
- Từ Vòng đời
2.8.6: Lifecycle Runtime Compose hiện phụ thuộc vào Thời gian chạy Compose1.7.1 - Lifecycle Runtime hiện phụ thuộc vào ProfileInstaller
1.4.0
Phiên bản 2.9.0-alpha02
Ngày 4 tháng 9 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha02. Phiên bản 2.9.0-alpha02 bao gồm các thay đổi sau.
Sửa lỗi
- Từ Lifecycle
2.8.5: Cập nhật các quy tắcandroidx.lifecycle.ReportFragmentProGuard để cho phép làm rối mã nguồn . (ff898e1)
Đóng góp bên ngoài
- Di chuyển
androidx.compose.ui.platform.LocalLifecycleOwnersang nhóm tài nguyên chung (KMP). Cảm ơn Ivan Matkov của JetBrains vì những đóng góp này. (8cd5d03) - Từ Lifecycle
2.8.5: Giờ đây, uỷ quyền tiện ích SavedStateHandle.saveable` hỗ trợ các giá trị có thể rỗng. Cảm ơn Roman Kalukiewicz đã đóng góp. (0d78ea6)
Phiên bản 2.9.0-alpha01
Ngày 7 tháng 8 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.9.0-alpha01. Phiên bản 2.9.0-alpha01 bao gồm các thay đổi sau.
Kotlin Multiplatform
lifecycle-testinghiện đã tương thích với KMP. (Iea41e)- Thêm tính năng hỗ trợ cho mục tiêu đa nền tảng Kotlin
linuxArm64(I139d3, b/338268719)
Tính năng mới
- Một cấu phần phần mềm
androidx.lifecycle:lifecycle-viewmodel-testingKMP mới hiện đã có sẵn, cung cấp một lớpViewModelScenariođể kiểm thử riêng biệt các ViewModel, có hỗ trợonCleared(tất cả nền tảng) vàSavedStateHandle(chỉ Android). (337f68d, c9b3409, 9799a95c, b/264602919) - Việc tạo
ViewModelbằngViewModelProviderhiện đã an toàn cho luồng; chú giải@MainThreadđã bị xoá. (Ifd978, b/237006831)
Thay đổi về API
- Thêm hàm nhà máy
CreationExtras.Key()để đơn giản hoá việc tạo các đối tượngCreationExtras.Keyẩn danh. (I970ee) CreationExtrashiện có các hàm nạp chồng toán tử tương tự như hàm map để cho phép thao tác theo cách thành ngữ đối với nội dung trong Kotlin. Thư viện này cho phép sử dụngin,+=và+vớiCreationExtras. (Ib4353)CreationExtrashiện triển khai các phương thứcequals,hashCodevàtoString. (Ib4353)NewInstanceFactoryhiện đã có trên các mục tiêu JVM Desktop và Android. (d3d0892)- Thuộc tính tiện ích mở rộng nội tuyến để hiển thị Application cơ bản một cách an toàn trong phiên bản ngôn ngữ Kotlin 2.0 (I39df2)
Sửa lỗi
- Xoá quy trình vạch ra thủ công quyền truy cập vào các API nền tảng mới vì quy trình này diễn ra tự động thông qua việc tạo mô hình API khi sử dụng R8 với AGP 7.3 trở lên (ví dụ: R8 phiên bản 3.3) và cho tất cả các bản dựng khi sử dụng AGP 8.1 trở lên (ví dụ: D8 phiên bản 8.1). Những ứng dụng không dùng AGP nên cập nhật lên D8 phiên bản 8.1 trở lên. Hãy xem bài viết này để biết thêm thông tin. (If6b4c, b/345472586)
Phiên bản 2.8
Phiên bản 2.8.7
Ngày 30 tháng 10 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.7. Phiên bản 2.8.7 bao gồm các thay đổi sau.
Thay đổi về API
androidx.compose.ui.platform.LocalLifecycleOwnerhiện có trong nhóm tài nguyên chung (KMP). (6a3f5b3)lifecycle-runtime-compose:desktopcấu phần phần mềm đã bị xoá và-jvmStubscũng như-linuxx64Stubscấu phần phần mềm đã được thêm. Không có mục tiêu nào trong số này được dùng, chúng là các phần giữ chỗ để hỗ trợ các nỗ lực của Jetbrains Compose. (6a3f5b3)
Phiên bản 2.8.6
Ngày 18 tháng 9 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.6. Phiên bản 2.8.6 bao gồm các thay đổi sau.
Sửa lỗi
- Lỗi
NullSafeMutableLiveDataLint đã cải thiện khả năng hỗ trợ cho truyền thông minh, tránh trường hợp nhận diện sai. (85fed6, b/181042665)
Thông tin cập nhật về phần phụ thuộc
- Lifecycle Runtime Compose hiện phụ thuộc vào Thời gian chạy Compose
1.7.1
Phiên bản 2.8.5
Ngày 4 tháng 9 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.5. Phiên bản 2.8.5 bao gồm các thay đổi sau.
Sửa lỗi
- Cập nhật các quy tắc
androidx.lifecycle.ReportFragmentProGuard để cho phép làm rối mã nguồn . (ff898e1)
Đóng góp bên ngoài
- Uỷ quyền tiện ích
SavedStateHandle.saveablehiện hỗ trợ các giá trị có thể rỗng. Cảm ơn Roman Kalukiewicz đã đóng góp. (0d78ea6)
Phiên bản 2.8.4
Ngày 24 tháng 7 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.4. Phiên bản 2.8.4 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây,
LiveData.asFlow()xử lý đúng cách các trường hợp mà Flow được trả về sẽ hoàn tất ngay sau khi nhận được một giá trị đã được đặt trênLiveData(ví dụ: khi sử dụngtake(1)). (I9c566) - Giờ đây, quá trình hoàn tất
Lifecycle*Effectlà bất biến (tức là nếuonStopOrDisposeđược gọi do Vòng đời bị dừng, thì quá trình này sẽ không được gọi lần thứ hai khi xử lý trừ phi Vòng đời quay lạiSTARTEDmột lần nữa). (I5f607, b/352364595)
Phiên bản 2.8.3
Ngày 1 tháng 7 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.3. Phiên bản 2.8.3 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề về khả năng tương thích ngược của Lifecycle 2.8 với Compose 1.6.0 trở xuống khi sử dụng tính năng rút gọn mã. (aosp/3133056, b/346808608)
Phiên bản 2.8.2
Ngày 12 tháng 6 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.2. Phiên bản 2.8.2 bao gồm các thay đổi sau.
Sửa lỗi
- Đã khắc phục lỗi
CompositionLocal LocalLifecycleOwner not presentkhi dùng Lifecycle 2.8.X với Compose 1.6.X trở xuống – giờ đây, bạn có thể dùng Lifecycle 2.8.2 với mọi phiên bản Compose mà không cần giải pháp nào. (aosp/3105647, b/336842920) ViewModelProvidersẽ không còn gặp sự cố khi kết hợp các phiên bản trước của phần phụ thuộc Vòng đờicompileOnlyvới các phiên bản 2.8 trở lên, khắc phục các vấn đề với các thư viện như LeakCanary. (I80383, b/341792251)
Phiên bản 2.8.1
Ngày 29 tháng 5 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.1. Phiên bản 2.8.1 bao gồm các thay đổi sau.
Sửa lỗi
lifecycle-viewmodel-composehiện chỉ có một phần phụ thuộc chung vàocompose-runtime, xoá phần phụ thuộc chung vàocompose-ui. Cấu phần phần mềm Android vẫn giữ lạicompose-uiđể đảm bảo khả năng tương thích. (aosp/3079334, b/339562627)- Hoạt động tích hợp
saveablecủaViewModelbằng cách sử dụng đối tượng uỷ quyền thuộc tính hiện sử dụng tên lớp trong khoá được tạo tự động, tránh xung đột nếu nhiều lớp sử dụng cùng mộtSavedStateHandle. (aosp/3063463)
Phiên bản 2.8.0
Ngày 14 tháng 5 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.0. Phiên bản 2.8.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.7.0
LocalLifecycleOwnerđã được di chuyển từ giao diện người dùng Compose sanglifecycle-runtime-composeđể có thể sử dụng các API trợ giúp dựa trên Compose bên ngoài giao diện người dùng Compose.- Cấu phần phần mềm
lifecycle-runtime-composehiện chứa các APIdropUnlessResumedvàdropUnlessStartedcho phép bạn giảm lượt nhấp hoặc các sự kiện khác xảy ra ngay cả sau khiLifecycleOwnergiảm xuống dướiLifecycle.Stateđã cho. Ví dụ: bạn có thể dùng phương thức này với Navigation Compose để tránh xử lý các sự kiện nhấp chuột sau khi quá trình chuyển đổi sang một màn hình khác đã bắt đầu:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } ViewModel.viewModelScopehiện là một tham số hàm khởi tạo có thể ghi đè, cho phép bạn chèn trình điều phối vàSupervisorJob()của riêng mình hoặc ghi đè giá trị mặc định bằng cách sử dụngbackgroundScopecó sẵn trongrunTest. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }ViewModelđã được viết lại bằng Kotlin và hiện sử dụngAutoClosablethay vìCloseable. Giờ đây, nó hỗ trợ việc thêm các đối tượngAutoCloseablebằng mộtkeycho phép truy xuất các đối tượng đó thông quagetCloseable().Giờ đây, việc gọi
LifecycleStartEffectvàLifecycleResumeEffectmà không có khoá sẽ gây ra lỗi, theo cùng một quy ước như APIDisposableEffectmà các API này phản ánh.Ngừng sử dụng
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)và thay bằngLiveData.toPublisher(lifecycleOwner).Các tiện ích
lifecycle-livedata-core-ktxkotlin hiện đã được chuyển sang mô-đunlifecycle-livedata-core.NullSafeMutableLiveDatađã được tái cấu trúc để tránh nhiều trường hợp dương tính giả.
Khả năng tương thích của Kotlin Multiplatform trong vòng đời
Các API Vòng đời cốt lõi trong Lifecycle, LifecycleOwner, LifecycleObserver, Lifecycle.State, Lifecycle.Event và LifecycleRegistry hiện được phân phối trong các cấu phần phần mềm tương thích với Kotlin Multiplatform.
Các cấu phần phần mềm bị ảnh hưởng:
lifecycle-commondi chuyển hầu hết các API sangcommonvà hỗ trợ jvm cũng như iOS ngoài Android.lifecycle-runtimedi chuyển hầu hết các API sangcommonvà hỗ trợ jvm cũng như iOS ngoài Android.lifecycle-runtime-ktxhiện đang trống, tất cả API đều được chuyển vàolifecycle-runtime.lifecycle-runtime-composedi chuyển tất cả các API sangcommonvà gửi một cấu phần phần mềm Android, phù hợp với khả năng hỗ trợ đa nền tảng củaandroidx.compose.
Khả năng tương thích của ViewModel với Kotlin Multiplatform
Cấu phần phần mềm lifecycle-viewmodel và các API như ViewModel, ViewModelStore, ViewModelStoreOwner và ViewModelProvider hiện được phân phối trong các cấu phần phần mềm tương thích với Kotlin Multiplatform.
Để đáp ứng thay đổi này, các phương thức như trên ViewModelProvider lấy java.lang.Class<T> hiện có một phương thức tương đương lấy kotlin.reflect.KClass<T>.
Khả năng tương thích nhị phân trên Android vẫn được duy trì, nhưng có một số thay đổi đáng chú ý khi so sánh giao diện API Android với giao diện API chung:
- Giờ đây, việc tạo một thực thể
ViewModelProviderđược thực hiện thông qua các phương thứcViewModelProvider.create()thay vì gọi trực tiếp hàm khởi tạo của thực thể đó. ViewModelProvider.NewInstanceFactoryvàViewModelProvider.AndroidViewModelFactorychỉ có trên Android.- Bạn nên mở rộng Nhà máy tuỳ chỉnh từ
ViewModelProvider.Factoryvà sử dụng phương thứccreatelấyCreationExtrashoặc sử dụng Kotlin DSLviewModelFactory.
- Bạn nên mở rộng Nhà máy tuỳ chỉnh từ
- Việc sử dụng
ViewModelProvidermà không có nhà máy tuỳ chỉnh trên các nền tảng không phải JVM sẽ dẫn đếnUnsupportedOperationException. Trên các nền tảng JVM, khả năng tương thích được duy trì bằng cách sử dụng hàm khởi tạo ViewModel không có đối số nếu bạn không cung cấp nhà máy tuỳ chỉnh. viewModelScopesẽ dự phòng choEmptyCoroutineContexttrong các nền tảng không cóDispatchers.Main(ví dụ: Linux).
Các cấu phần phần mềm bị ảnh hưởng:
lifecycle-viewmodeldi chuyển hầu hết các API sangcommonvà hỗ trợ jvm cũng như iOS ngoài Android.lifecycle-viewmodel-ktxhiện đang trống, tất cả API đều được chuyển vàolifecycle-viewmodel.lifecycle-viewmodel-composedi chuyển tất cả các API sangcommonvà gửi một cấu phần phần mềm Android, phù hợp với khả năng hỗ trợ đa nền tảng củaandroidx.compose.
Thay đổi về hành vi
InitializerViewModelFactory(bao gồm cả hàm trình tạoviewModelFactory) hiện sẽ gửi mộtIllegalArgumentExceptionnếu bạn đã thêm mộtinitializercó cùngclazz: KClass<VM : ViewModel>. (Ic3a36)
Lỗi đã biết
lifecycle-*:2.8.0yêu cầu phiên bản Compose tối thiểu là 1.7.0-alpha05 (b/336842920).
Phiên bản 2.8.0-rc01
Ngày 1 tháng 5 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.0-rc01. Phiên bản 2.8.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một vấn đề trong đó Baseline Profile cho các lớp
lifecycle-commonkhông được đóng gói đúng cách. Các thành phần này hiện được đóng gói trong AARlifecycle-runtime. (aosp/3038274, b/322382422) - Đã khắc phục một thay đổi ngoài ý muốn về thứ tự xoá các thực thể
AutoCloseableđược đính kèm vào một ViewModel – thứ tự trước đó làaddCloseable(String, AutoCloseable), sau đó làaddClosable(AutoCloseable), rồi đếnonCleared()đã được khôi phục. (aosp/3041632) - Cải thiện hành vi tạo mặc định cho
viewModelScopeđối với môi trường gốc và môi trường JVM trên máy tính. (aosp/3039221)
Đóng góp bên ngoài
- Cảm ơn Victor Kropp đã cải thiện hoạt động kiểm tra luồng chính trên JVM Desktop. (aosp/3037116)
Phiên bản 2.8.0-beta01
Ngày 17 tháng 4 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.0-beta01. Phiên bản 2.8.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
- Hiện tại, cấu phần phần mềm
lifecycle-runtime-composetương thích với Kotlin Multiplatform, di chuyển mã của cấu phần phần mềm này sangcommonvà gửi một cấu phần phần mềm Android, phù hợp với khả năng hỗ trợ đa nền tảng choandroidx.compose. (If7a71, I4f4a0, b/331769623)
Phiên bản 2.8.0-alpha04
Ngày 3 tháng 4 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.0-alpha04. Phiên bản 2.8.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Hiện tại, cấu phần phần mềm
lifecycle-viewmodel-composetương thích với Kotlin Multiplatform, di chuyển mã của cấu phần phần mềm này sangcommonvà gửi một cấu phần phần mềm Android, phù hợp với khả năng hỗ trợ đa nền tảng củaandroidx.compose. Để đáp ứng thay đổi này, phương thức có khả năng kết hợpviewModelhiện chấp nhậnKClassngoàijava.lang.Class. (b/330323282)
Sửa lỗi
NullSafeMutableLiveDatađã được tái cấu trúc để tránh nhiều trường hợp dương tính giả. (I2d8c1, Iafb18, I03463, I7ecef)
Cập nhật các phần phụ thuộc
- Cấu phần phần mềm
lifecycle-viewmodel-composehiện phụ thuộc vào Compose 1.6.0. - Vòng đời hiện phụ thuộc vào Trình cài đặt hồ sơ 1.3.1.
Phiên bản 2.8.0-alpha03
Ngày 20 tháng 3 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.0-alpha03. Phiên bản 2.8.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
ViewModel.viewModelScopehiện là một tham số hàm khởi tạo có thể ghi đè, cho phép bạn chèn trình điều phối vàSupervisorJob()của riêng mình hoặc ghi đè giá trị mặc định bằng cách sử dụngbackgroundScopecó sẵn trongrunTest. (I2817c, b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
Khả năng tương thích của Kotlin Multiplatform
Cấu phần phần mềm lifecycle-viewmodel và các API như ViewModel, ViewModelStore, ViewModelStoreOwner và ViewModelProvider hiện được phân phối trong các cấu phần phần mềm tương thích với Kotlin Multiplatform. (b/214568825)
Để đáp ứng thay đổi này, các phương thức như trên ViewModelProvider lấy java.lang.Class<T> hiện có một phương thức tương đương lấy kotlin.reflect.KClass<T>.
Khả năng tương thích nhị phân trên Android vẫn được duy trì, nhưng có một số thay đổi đáng chú ý khi so sánh giao diện API Android với giao diện API chung:
- Giờ đây, việc tạo một thực thể
ViewModelProviderđược thực hiện thông qua các phương thứcViewModelProvider.create()thay vì gọi trực tiếp hàm khởi tạo của thực thể đó. ViewModelProvider.NewInstanceFactoryvàViewModelProvider.AndroidViewModelFactorychỉ có trên Android.- Bạn nên mở rộng Nhà máy tuỳ chỉnh từ
ViewModelProvider.Factoryvà sử dụng phương thứccreatelấyCreationExtrashoặc sử dụng Kotlin DSLviewModelFactory.
- Bạn nên mở rộng Nhà máy tuỳ chỉnh từ
- Việc sử dụng
ViewModelProvidermà không có nhà máy tuỳ chỉnh trên các nền tảng không phải JVM sẽ dẫn đếnUnsupportedOperationException. Trên các nền tảng JVM, khả năng tương thích được duy trì bằng cách sử dụng hàm khởi tạo ViewModel không có đối số nếu bạn không cung cấp nhà máy tuỳ chỉnh. viewModelScopesẽ dự phòng choEmptyCoroutineContexttrong các nền tảng không cóDispatchers.Main(ví dụ: Linux).
Thay đổi về hành vi
InitializerViewModelFactory(bao gồm cả hàm trình tạoviewModelFactory) hiện sẽ gửi mộtIllegalArgumentExceptionnếu bạn đã thêm mộtinitializercó cùngclazz: KClass<VM : ViewModel>. (Ic3a36)
Sửa lỗi
ViewModel.getCloseablehiện xử lý các khoá trùng lặp: nếukeyđã có một tài nguyênAutoCloseableđược liên kết với khoá đó, thì tài nguyên cũ sẽ được thay thế và đóng ngay lập tức. (Ibeb67)- Giờ đây, việc truy cập vào
viewModelScopecủaViewModelđã an toàn cho luồng. (If4766, b/322407038)
Đóng góp bên ngoài
LocalLifecycleOwnerđược di chuyển từ giao diện người dùng Compose sang lifecycle-runtime-compose để có thể sử dụng các API trợ giúp dựa trên Compose bên ngoài giao diện người dùng Compose. Cảm ơn Jake Wharton đã đóng góp. (I6c41b, b/328263448)
Phiên bản 2.8.0-alpha02
Ngày 21 tháng 2 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.0-alpha02. Phiên bản 2.8.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Các API
dropUnlessResumedvàdropUnlessStartedđã được thêm vào để cho phép bạn thả sự kiện nhấp hoặc các sự kiện khác xảy ra ngay cả sau khiLifecycleOwnergiảm xuống dướiLifecycle.Stateđã cho. Ví dụ: bạn có thể dùng phương thức này với Navigation Compose để tránh xử lý các sự kiện nhấp sau khi quá trình chuyển đổi sang một màn hình khác đã bắt đầu:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }(Icba83, b/317230685)
Hoạt động chuyển đổi trong Kotlin
- Giờ đây,
ViewModelđược viết bằng Kotlin (I16f26, b/214568825) - Các tiện ích
lifecycle-viewmodel-ktxkotlin hiện đã được chuyển sang mô-đun vòng đời cơ sở. (Id787b, b/274800183) - Các tiện ích
lifecycle-runtime-ktxkotlin hiện đã được chuyển sang mô-đun vòng đời cơ sở. (Ic3686, b/274800183) - Các tiện ích
lifecycle-livedata-core-ktxkotlin hiện đã được chuyển sang mô-đun vòng đời cơ sở. (I54a3d, b/274800183)
Khả năng tương thích của Kotlin Multiplatform
- Các API Vòng đời cốt lõi trong
Lifecycle,LifecycleOwner,LifecycleObserver,Lifecycle.State,Lifecycle.EventvàLifecycleRegistryhiện được phân phối trong các cấu phần phần mềm tương thích với Kotlin Multiplatform. (b/317249252)
Thay đổi về API
- Giờ đây, việc gọi
LifecycleStartEffectvàLifecycleResumeEffectmà không có khoá sẽ gây ra lỗi, theo cùng một quy ước như APIDisposableEffectmà các API này phản ánh. (Ib0e0c, b/323518079) ViewModelhiện sử dụngAutoCloseablethay vìCloseable. Đó là một thay đổi tương thích ngược. (I27f8e, b/214568825)- Ngừng sử dụng
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)và thay bằngLiveData.toPublisher(lifecycleOwner). (Iabe29, b/262623005)
Đóng góp bên ngoài
- Cảm ơn Ivan Matkov của Jetbrains vì đã giúp chuyển Lifecycle sang Kotlin Multiplatform. (aosp/2926690, I0c5ac, If445d)
Phiên bản 2.8.0-alpha01
Ngày 24 tháng 1 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.8.0-alpha01. Phiên bản 2.8.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
ViewModelhiện hỗ trợ việc thêm các đối tượngCloseablebằng mộtkeycho phép truy xuất các đối tượng đó thông quagetCloseable(). (I3cf63)
Phiên bản 2.7
Phiên bản 2.7.0
Ngày 10 tháng 1 năm 2024
Phát hành androidx.lifecycle:lifecycle-*:2.7.0. Phiên bản 2.7.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.6.0
TestLifecycleOwnerhiện có một hàm tạm ngưngsetCurrentState()để đảm bảo rằng quá trình thay đổi trạng thái và tất cả các lệnh gọi lạiLifecycleObserverđều hoàn tất trước khi trả về. Đặc biệt, không giống như việc đặt trực tiếp thuộc tínhcurrentState, phương thức này không sử dụngrunBlocking, giúp bạn có thể sử dụng một cách an toàn trong một coroutine, chẳng hạn như coroutine dorunTestcung cấp.- Các tiện ích
LiveDatacủamapvàswitchMaphiện phản ánh hành vi củadistinctUntilChanged– nếuLiveDatacó mộtvalueđược đặt, thì hàmmap/switchMapsẽ được gọi ngay lập tức để điền sẵnvaluecủaLiveDatađược trả về. Điều này đảm bảo rằng giá trị ban đầu sẽ được đặt trong lần kết hợp đầu tiên (khi dùng vớiobserveAsState()), nhưng không thay đổi hành vi quan sát – các giá trị cập nhật từLiveDatanguồn sẽ vẫn chỉ áp dụng sau khi bạn bắt đầu quan sátLiveData. - Bản phát hành này khắc phục một vấn đề trong đó
SavedStateHandlesẽ không khôi phục đúng cách các lớpParcelabletuỳ chỉnh sau khi quá trình bị gián đoạn và tạo lại. Do thông tin về loại bị mất do khung Android, các mảng Parcelable tuỳ chỉnh cần thêm công việc (tạo mảng được nhập theo cách thủ công thuộc loại phù hợp) và tài liệu vềget,getLiveDatavàgetStateFlowhiện nêu rõ hạn chế này. - Các quy tắc giữ proguard liên kết với
LifecycleObserverđã bị xoá. Điều này có nghĩa là mã được bảo vệ bằng ProGuard muốn sử dụng các API thông qua tính năng phản chiếu (chẳng hạn như sử dụng chú thích@OnLifecycleEventđã ngừng hoạt động từ lâu) sẽ cần cung cấp các quy tắc lưu giữ riêng cho trường hợp sử dụng cụ thể của mình.
Khả năng quan sát sự kiện trong vòng đời
- Thay vì sử dụng
LifecycleEventObserver, giờ đây, bạn có thể quan sátFlowcủaLifecycle.Eventthông qua phương thức mở rộngLifecycle.asFlow(). - Giờ đây, người dùng Jetpack Compose có thể sử dụng
LifecycleEventEffectđể chạy các hiệu ứng phụ của Compose dựa trênLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- Người dùng Jetpack Compose có thể sử dụng
LifecycleStartEffectvàLifecycleResumeEffectđể xử lý các cặp sự kiện – tương ứng là bắt đầu đến dừng và tiếp tục đến tạm dừng. API này phản ánh API có trongDisposableEffectvà phù hợp với những trường hợp cần đảo ngược thay đổi được thực hiện khi trạng thái tăng lên khi giảm xuống.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
Hãy xem bài viết Chạy mã trên các sự kiện trong vòng đời để biết thêm thông tin.
Khả năng quan sát trạng thái vòng đời
- Giờ đây, bạn có thể quan sát
Lifecycle.Statehiện tại thông qua thuộc tínhLifecycle.currentStateFlow. Thuộc tính này trả về mộtStateFlow, trong đóvaluelàLifecycle.Statehiện tại. - Người dùng Jetpack Compose có thể sử dụng tiện ích
Lifecycle.currentStateAsState()để trực tiếp hiển thịLifecycle.Statedưới dạngStatecủa Compose. Đây là một lựa chọn thay thế ngắn gọn và tương đương vớilifecycle.currentStateFlow.collectAsState().
Hãy xem phần Thu thập trạng thái vòng đời bằng luồng để biết thêm thông tin.
Phiên bản 2.7.0-rc02
Ngày 13 tháng 12 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.7.0-rc02. Phiên bản 2.7.0-rc02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố trong đó
SavedStateHandlesẽ không khôi phục đúng cách các lớpParcelabletuỳ chỉnh sau khi quá trình bị gián đoạn và tạo lại. Do thông tin về loại bị mất do khung Android, các mảng Parcelable tuỳ chỉnh cần thêm công việc (tạo mảng được nhập theo cách thủ công thuộc loại phù hợp) và tài liệu vềget,getLiveDatavàgetStateFlowhiện nêu rõ hạn chế này. (I0b55a)
Phiên bản 2.7.0-rc01
Ngày 15 tháng 11 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.7.0-rc01. Phiên bản 2.7.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
LifecycleStartEffectvàLifecycleResumeEffecthiện xử lý và tạo lại khối hiệu ứng một cách chính xác nếuLifecycleOwnerthay đổi. (Ia25c6)
Phiên bản 2.7.0-beta01
Ngày 1 tháng 11 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.7.0-beta01 mà không có thay đổi nào. Phiên bản 2.7.0-beta01 bao gồm các thay đổi sau.
- Tăng số phiên bản thử nghiệm, không có thay đổi lớn nào đối với phiên bản phát hành này.
Phiên bản 2.7.0-alpha03
Ngày 18 tháng 10 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.7.0-alpha03. Phiên bản 2.7.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
lifecycle-runtime-testinghiện có một chương trình kiểm tra lỗi mã nguồn mới để tránh thiết lậpLifecycle.StatecủaTestLifecycleOwnerbằng cách sử dụng trườngcurrentStatekhi ở trong một coroutine. Giờ đây, quy trình kiểm tra tìm lỗi mã nguồn đề xuấtsetCurrentStatetạm ngưng cho phép đặtLifecycle.Statemà không chặn. (Icf728, b/297880630)
Sửa lỗi
- Khắc phục vấn đề với
LiveData.switchMaptrong đó việc trả về cùng một thực thểLiveDatatrong cả lệnh gọi ban đầu và lệnh gọi tiếp theo sẽ ngăn thực thểLiveDatađược thêm làm nguồn. (Ibedcba7)
Phiên bản 2.7.0-alpha02
Ngày 6 tháng 9 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.7.0-alpha02. Phiên bản 2.7.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
TestLifecycleOwnerhiện bao gồm hàm tạm ngưngsetCurrentState()để cho phép người dùng sử dụngTestLifecycleOwnertừ trong một coroutine, chẳng hạn như coroutine dorunTestcung cấp. (I329de, b/259344129)
Thay đổi về API
- Tất cả các tệp trong mô-đun
lifecycle-livedata-ktxđều đã được di chuyển vào mô-đunlifecycle-livedatachính. (I10c6f, b/274800183)
Thay đổi về hành vi
- Các tiện ích
LiveData.map()vàLiveData.switchMap()hiện đặtvaluecủaLiveDatađược trả về nếuLiveDatatrước đó đã đặt một giá trị, đảm bảo rằng việc sử dụng LiveData kết quả trong Jetpack Compose có trạng thái phù hợp trên thành phần ban đầu. (I91d2b, b/269479952) addCloseable()củaViewModelhiện đóngCloseablengay lập tức nếuViewModelđã nhận được lệnh gọi đếnonCleared(). (I4712e, b/280294730)
Sửa lỗi
- Từ Lifecycle
2.6.2: Khắc phục vấn đề trong đóSavedStateHandlesẽ không được khôi phục đúng cách sau khi quá trình kết thúc nếu trạng thái được khôi phục,save()được gọi mà không thực sự lưu trạng thái trongSavedStateRegistrymẹ, rồi trạng thái được khôi phục lại. Điều này khắc phục hoạt động tương tác giữarememberSaveablevàNavHostcủa Navigation Compose. (aosp/2729289)
Phiên bản 2.7.0-alpha01
Ngày 26 tháng 7 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.7.0-alpha01. Phiên bản 2.7.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
Lifecycle.Statehiện có thể quan sát được bằng Compose thông quaLifecycle.currentStateFlow, trả về mộtStateFlowtrong đóvaluelàLifecycle.Statehiện tại. (Ib212d, b/209684871)- Giờ đây, bạn có thể quan sát
Lifecycle.Eventdưới dạngFlowbằngLifecycle.asFlow().(If2c0f, b/176311030) - Đã thêm API
LifecycleResumeEffectđể chạy cácSideEffectdựa trên cả lệnh gọi lại sự kiệnLifecycle.Event.ON_RESUMEvàLifecycle.Event.ON_PAUSE. (I60386, b/235529345) - Đã thêm API
LifecycleStartEffectđể chạy cácSideEffectcủa Compose dựa trên các lệnh gọi lại sự kiệnLifecycle.Event.ON_STARTvàLifecycle.Event.ON_STOP. (I5a8d1, b/235529345) - Đã thêm API
LifecycleEventEffectđể chạy cácSideEffectcủa Compose dựa trênLifecycle.Event. (Ic9794, b/235529345) - Tiện ích
Lifecycle.collectAsState()đã được thêm vào để trực tiếp hiển thịLifecycle.Statedưới dạngStatecủa Compose. Đây là một lựa chọn thay thế ngắn gọn và tương đương vớilifecycle.currentStateFlow.collectAsState(). (I11015, b/235529345)
Sửa lỗi
- Tiện ích
LiveData.distinctUntilChanged()hiện đặtvaluecủaLiveDatađược trả về nếuLiveDatatrướ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ồnLiveDatasẽ vẫn chỉ áp dụng sau khi bạn bắt đầu quan sátLiveDatađược trả về từdistinctUntilChanged(). (Ib482f) - Các quy tắc giữ proguard liên kết với
LifecycleObserverđã bị xoá. Điều này có nghĩa là mã được bảo vệ bằng ProGuard muốn sử dụng các API thông qua tính năng phản chiếu sẽ cần cung cấp các quy tắc lưu giữ riêng cho trường hợp sử dụng cụ thể của mình. (Ia12fd)
Phiên bản 2.6
Phiên bản 2.6.2
Ngày 6 tháng 9 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.6.2. Phiên bản 2.6.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khi
SavedStateHandlekhông được khôi phục đúng cách sau khi quá trình bị gián đoạn nếu trạng thái được khôi phục,save()được gọi mà không thực sự lưu trạng thái trongSavedStateRegistrymẹ, sau đó trạng thái được khôi phục lại. Điều này khắc phục hoạt động tương tác giữarememberSaveablevàNavHostcủa Navigation Compose. (aosp/2729289)
Phiên bản 2.6.1
Ngày 22 tháng 3 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.6.1. Phiên bản 2.6.1 bao gồm các thay đổi sau.
Thông tin cập nhật về phần phụ thuộc
lifecycle-viewmodel-savedstatenay phụ thuộc vào SavedState1.2.1. (cd7251)- Vòng đời hiện phụ thuộc vào ProfileInstaller
1.3.0. (f9d30b)
Phiên bản 2.6.0
Ngày 8 tháng 3 năm 2023
Phát hành androidx.lifecycle:lifecycle-*:2.6.0. Phiên bản 2.6.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 2.5.0
- Giờ đây,
LiveDatabao gồm một thuộc tínhisInitializedmới cho biết đã có giá trị rõ ràng được đặt trênLiveDatahay chưa, nhờ đó giúp bạn phân biệt giữa các trường hợpliveData.valuetrả vềnulldo chưa có giá trị nào được đặt hay do có giá trịnullrõ ràng. MediatorLiveDatagiờ đây bao gồm một hàm khởi tạo để đặt giá trị ban đầu.- Thêm một tiện ích mới vào
StateFlowvàFlowcủacollectAsStateWithLifecycle()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. - Phương thức
Lifecycle.launchWhenXvà phương thứcLifecycle.whenXkhô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ùngLifecycle.repeatOnLifecycle. Để biết thêm thông tin về công việc tạm ngưng một lần, vui lòng xem nội dung giải thích này về lý do khiến việc này vốn không an toàn. - Chuyển đổi Kotlin – Rất nhiều lớp Vòng đời đã được chuyển đổi sang Kotlin. Tất cả các lớp được chuyển đổi vẫn giữ được khả năng tương thích nhị phân với các phiên bản trước. Các lớp sau đây có những thay đổi không tương thích với nguồn đối với các lớp được viết bằng Kotlin:
ViewTreeLifecycleOwner,LiveDataReactiveStreams,HasDefaultViewModelProviderFactory,ViewTreeViewModelStoreOwner,Transformations,ViewModelStoreOwner,LifecycleOwner
Bảng bên dưới cung cấp các lượt chuyển đổi nguồn cho phiên bản mới của vòng đời.
| Lifecycle 2.5 | Vòng đời 2.5 (KTX) | Lifecycle 2.6 |
|---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- Tính chất rỗng của phương thức
onChangedcủaObserverđược tạo trong Kotlin hiện khớp với tính chất rỗng của kiểu chung. Nếu muốnObserver.onChanged()chấp nhận một loại có thể nhận giá trị rỗng, bạn phải tạo thực thểObserverbằng một loại có thể nhận giá trị rỗng. - Những lớp này cũng được chuyển đổi sang Kotlin nhưng vẫn tương thích với nguồn:
DefaultLifecycleObserver,LifecycleEventObserver,Lifecycle,LifecycleRegistry,LifecycleObserver,ViewModelStore,AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatchervàProcessLifecycleOwner
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 đặtvaluecủaLiveDatađược trả về nếuLiveDatatrướ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ồnLiveDatasẽ vẫn chỉ áp dụng sau khi bạn bắt đầu quan sátLiveDatađượ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ínhlifecyclethay vì triển khai hàmgetLifecycle()trước. (I75b4b, b/240298691) ViewModelStoreOwnerhiệ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ínhviewModelStorethay vì triển khai hàmgetViewModelStore()trước. (I86409, b/240298691)- Phần mở rộng Kotlin trong
LifecycleOwnercung cấp trườnglifecycleScopeđã được chuyển sang cấu phần phần mềmlifecycle-commontừlifecycle-runtime-ktx. (I41d78, b/240298691) - Phần mở rộng Kotlin trong
Lifecyclecung cấp trườngcoroutineScopeđã được chuyển sang cấu phần phần mềmlifecycle-commontừ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ứcandroidx.arch.core.util.Functionmà thay thế bằng phiên bản dùngFunction1củ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ênViewcủaandroidx.lifecycle.setViewTreeViewModelStoreOwnervàandroidx.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ínhdefaultViewModelProviderFactoryvàdefaultViewModelCreationExtrasthay 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ứconChanged()của mẫu này hiện dùngvaluetên cho tham số. (Iffef2, I4995e, b/240298691) - Giờ đây,
AndroidViewModel,AbstractSavedStateViewModelFactory,LifecycleService,ServiceLifecycleDispatchervàProcessLifecycleOwnerđượ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,
LiveDatabao gồm một thuộc tínhisInitializedmới cho biết đã có giá trị rõ ràng được đặt trênLiveDatahay chưa, nhờ đó giúp bạn phân biệt giữa các trường hợpliveData.valuetrả vềnulldo chưa có giá trị nào được đặt hay do có giá trịnullrõ ràng. (Ibd018)
Các thay đổi về API
- Các API
collectAsStateWithLifecycle()củalifecycle-runtime-composekhông còn ở trạng thái thử nghiệm. (I09d42, b/258835424) - Phương thức
Lifecycle.launchWhenXvà phương thứcLifecycle.whenXkhô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ùngLifecycle.repeatOnLifecycle. (Iafc54, b/248302832)
Hoạt động chuyển đổi trong Kotlin
ViewTreeLifecycleOwnergiờ đâ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ênViewcủaandroidx.lifecycle.setViewTreeLifecycleOwnervàandroidx.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 đó tronglifecycle-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)LiveDataReactiveStreamsgiờ được viết bằng Kotlin. Các phần mở rộng Kotlin trước đây tronglifecycle-reactivestreams-ktxđã được chuyển sang mô-đunlifecycle-reactivestreamsvà 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,LifecycleObservervàViewModelStoregiờ đây được viết bằng Kotlin (Iadffd, (I60034), I8c52c, I9593d, I01fe1, I59a23, b/240298691)
Sửa lỗi
SavedStateHandlekhông còn gặp lỗiClassCastExceptionkhi gọiget()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
MediatorLiveDatagiờ đâ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
Lifecyclegiờ đâ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ạocallbackFlowthay vì sử dụng phương thức triển khai riêngChannelđể đảm bảo độ an toàn cho chuỗi cũng như bảo vệ ngữ cảnh. (I4a8b2, b/200596935)- Hàm
asLiveDatacủaFlowLiveDatagiờ đây sẽ giữ nguyên giá trị ban đầu củaStateFlowkhi tạo đối tượngLiveDatamới. (I3f530, b/157380488) - Trong Lifecycle
2.5.1: Phương thức triển khai tuỳ chỉnh củaAndroidViewModelFactorygiờ đây sẽ gọi đúng hàmcreate(modelClass)khi sử dụng hàm khởi tạo có trạng thái vớiLifecycle2.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
StateFlowvàFlowcủacollectAsStateWithLifecyclethu 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ộtLifecycle.Statenhất định. Khi vòng đời giảm xuống dướiLifecycle.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
AndroidViewModelFactoryhiện đã gọi đúng hàmcreate(modelClass)khi sử dụng hàm khởi tạoAndroidViewModelFactorycó trạng thái vớiLifecycle2.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
SavedStateHandlenay cung cấp một APIgetStateFlow()trả về mộtStateFlowcủ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ụngLiveData.ViewModel CreationExtras – khi viết
ViewModelProvider.Factorytuỳ chỉnh, bạn không còn cần mở rộngAndroidViewModelFactoryhoặcAbstractSavedStateViewModelFactoryđể có quyền truy cập vàoApplicationhoặcSavedStateHandletương ứng. Thay vào đó, các trường này được cung cấp cho mọi lớp conViewModelProvider.Factorydưới dạngCreationExtrasthông qua tình trạng quá tải mới củacreate: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 động1.5.0và Mảnh1.5.0tươ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-viewmodelcung cấp một Kotlin DSLviewModelFactorycho phép bạn xác địnhViewModelProvider.Factorytheo một hoặc nhiều trình khởi tạo lambda, mỗi trình chạy một lớpViewModelmà nhà máy tuỳ chỉnh của bạn hỗ trợ, sử dụngCreationExtraslà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-composehiện cung cấp một APIviewModel()lấy nhà máy lambda để tạo thực thểViewModelmà không cần tạoViewModelProvider.Factorytuỳ 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-composehiện chứa các API thử nghiệm mới trongSavedStateHandle.saveablecho phéprememberSaveablenhư hành vi được hỗ trợ bởiSavedStateHandlecủ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ượngCloseablevàoViewModelsẽ bị đóng khiViewModelbị xoá mà không cần thực hiện thao tác thủ công nào trongonCleared().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
CoroutineScopetriển khaiCloseable: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
ViewModeltrong 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.StatetừINITIALIZEDsangDESTROYEDgiờ đây sẽ luôn gửi mộtIllegalStateExceptionbất kểLifecyclecó trình quan sát đính kèm hay không. LifecycleRegistrynay sẽ xoá trình quan sát khi trình quan sát đạt trạng tháiDESTROYED.
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
ViewModelProvidersẽ 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ộtNullPointerExceptionkhi chuyển một nguồnnullthay vì lan truyền nguồnnulltớ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àoSavedStateHandle(I8bb86, b/225014345)
Sửa lỗi
- Đã khắc phục vấn đề lồng một
NavHostvào mộtNavHostkhác trong thẻ điều hướng phụ ở dưới cùng sẽ dẫn đếnIllegalStateExceptionkhi 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
MutableStatethử nghiệm vàoSavedStateHandle.saveablecho tương đương vớirememberSaveable(I38cfe, b/224565154)
Thay đổi API
CreationExtrashiệ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 lifecycleOwnerdoSavedStateHandleControllergâ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-composehiện cung cấpSavedStateHandleSaver, một API thử nghiệm đảm bảo các giá trị trongSavedStateHandleđược tích hợp chính xác với trạng thái bản sao đã lưu màrememberSaveablesử 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
SavedStateViewFactoryhiện hỗ trợ việc sử dụngCreationExtrasngay cả khi được khởi tạo bằngSavedStateRegistryOwner. 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
SavedStateHandlenay cung cấp một APIgetStateFlow()trả về mộtStateFlowKotlin để theo dõi các thay đổi về giá trị như một giải pháp thay thế cho việc sử dụngLiveData. (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ượngCloseablevàoViewModelsẽ bị đóng khiViewModelbị xoá mà không cần thực hiện thao tác thủ công nào trongonCleared(). (I55ea0) lifecycle-viewmodelnay cung cấp mộtInitializerViewModelFactorycho phép bạn thêm lambda để xử lý các lớpViewModelcụ thể, sử dụngCreationExtraslàm nguồn dữ liệu chính. (If58fc, b/216687549)lifecycle-viewmodel-composenay cung cấp một APIviewModel()lấy nhà máy lambda để tạo thực thểViewModelmà không cần tạoViewModelProvider.Factorytuỳ chỉnh. (I97fbb, b/216688927)
Thay đổi API
- Giờ đây, bạn có thể tạo
ViewModelvớiCreationExtrasthông qualifecycle-viewmodel-compose. (I08887, b/216688927)
Thay đổi về hành vi
- Việc cố gắng di chuyển
Lifecycle.StatetừINITIALIZEDsangDESTROYEDgiờ đây sẽ luôn cho ra mộtIllegalStateExceptionbất kểLifecyclecó trình quan sát đính kèm hay không. (I7c390, b/177924329) LifecycleRegistrynay sẽ xoá trình quan sát khi trình quan sát đạt trạng tháiDESTROYED. (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
SavedStateHandlevàSavedStateViewModelFactoryđã đượ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
LiveDataswitchMapcó 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
SavedStateHandlenay 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ậtlifecycle-processđể dựa vào Startup 1.1.1 nhằm đảm bảo nội dung sửa đổi ngănProcessLifecycleInitializerđưa raStartupExceptioncó 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
AndroidViewModeltuỳ chỉnh có các tham số theo thứ tự không chính xác và cố gắng tạoViewModel. (I340f7, b/177667711) - Giờ đây, bạn có thể tạo mô hình hiển thị thông qua
CreationExtrasbằng cách sử dụngAndroidViewModelFactorymà 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 SavedStateViewModelFactory và AbstractSavedStateViewModelFactory, 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:Stringnày cung cấp quyền truy cập vào khoá tuỳ chỉnh mà bạn đã chuyển tớiViewModelProvider.get().ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYcung cấp quyền truy cập vào lớpApplication.SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYcung cấp quyền truy cập vàoSavedStateRegistryOwnerđang được dùng để tạo ViewModel này.SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYcung cấp quyền truy cập vàoViewModelStoreOwnerđang được dùng để tạo ViewModel này.SavedStateHandleSupport.DEFAULT_ARGS_KEYcung cấp quyền truy cập vàoBundlecủa các đối số nên được dùng để xây dựngSavedStateHandle.
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-alpha01 và Navigation 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() và 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
SavedStateHandlesẽ 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ỏiSavedStateHandle. Do đó,SavedStateHandlesẽ 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-alpha01cho phiên bản cũ: Khắc phục được vấn đề giá trị mặc định được cung cấp cho mộtSavedStateHandlesẽ 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ỏiSavedStateHandle. Do đó,SavedStateHandlesẽ 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-processnay 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ụngProcessLifecycleInitializersẽ gây raStartupException. (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ùngLifecycleEventObserverhoặcDefaultLifecycleObserver. - 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ợpviewModel()vàLocalViewModelStoreOwner.- Thay đổi ngắt nguồn:
ViewModelProviderđã được viết lại trong Kotlin. Phương thứcViewModelProvider.Factory.createđã ngừng chấp nhận giá trị chung rỗng.
- Thay đổi ngắt nguồn:
- 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
DefaultLifecycleObservertừlifecycle.lifecycle-common-java8sanglifecycle.lifecycle-common.lifecycle.lifecycle-common-java8không cung cấp thêm chức năng nào ngoàilifecycle.lifecycle-common, vì vậy bạn có thể thay thế phần phụ thuộc bằnglifecycle.lifecycle-common. - API không phải coroutine từ
lifecycle-viewmodel-ktxđã được chuyển đến mô-đunlifecycle-viewmodel. lifecycle-processnay sử dụngandroidx.startupđể khởi chạyProcessLifecycleOwner.Trước đây, việc này do
androidx.lifecycle.ProcessLifecycleOwnerInitializerthực hiện.Nếu đã sử dụng
tools:node="remove"trênContentProviderđ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ùngLifecycleEventObserverhoặcDefaultLifecycleObserver. (I5a8fa) - Di chuyển DefaultLifecycleObserver từ
androidx.lifecycle.lifecycle-common-java8sangandroidx.lifecycle.lifecycle-common.androidx.lifecycle.lifecycle-common-java8không cung cấp thêm chức năng nào ngoàiandroidx.lifecycle.lifecycle-common, vì vậy bạn có thể thay thế phần phụ thuộc bằngandroidx.lifecycle.lifecycle-common. (I021aa) - Chuyển API không phải coroutine từ
lifecycle-viewmodel-ktxsang mô-đunlifecycle-viewmodel. (I6d5b2)
Đóng góp bên ngoài
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:blocknay 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)
RepeatOnLifecycleWrongUsagemới vàolifecycle-runtime-ktx, giúp phát hiện khi sử dụng sairepeateOnLifecycletrongonStart()hoặconResume(). (706078, b/187887400)
Các thay đổi về API
- API
LifecycleOwner.addRepeatingJobđã bị xoá và thay vào đó làLifecycle.repeatOnLifecyclephù 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
ProcessLifecycleInitializersang chế độ công khai để cácandroidx.startup.Initializerkhá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
NullSafeMutableLiveDatakhi 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
NullSafeMutableLiveDatakhi 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-processnay sử dụngandroidx.startupđể khởi chạyProcessLifecycleOwner.Trước đây, việc này do
androidx.lifecycle.ProcessLifecycleOwnerInitializerthực hiện.Nếu đã sử dụng
tools:node="remove"trênContentProviderđ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.flowWithLifecyclephá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 APILifecycle.repeatOnLifecycle. Đây là phiên bản thay thế cho APILifecycleOwner.addRepeatinJobmới. (I0f4cd)
Sửa lỗi
- Từ Lifecycle 2.3.1: Quy tắc tìm lỗi mã nguồn
NonNullableMutableLiveDatanay 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ộtViewModelStoreOwnerkhông bắt buộc, giúp làm việc với các chủ sở hữu không phảiLocalViewModelStoreOwnerdễ dàng hơn. Ví dụ: giờ đây bạn có thể sử dụngviewModel(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-composevàandroidx.navigation:navigation-composeđồng bộ hoá các phần phụ thuộc trênandroidx.compose.compiler:compiler:1.0.0-beta04vàandroidx.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.currentnay trả về mộtViewModelStoreOwnerrỗng để xác định xemViewModelStoreOwnercó 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()vàNavHost, vẫn sẽ có ngoại lệ nếu bạn không đặtViewModelStoreOwner. (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
LocalViewModelStoreOwnernay có một hàmprovidesmà bạn có thể dùng vớiCompositionLocalProvider, thay thế APIasProvidableCompositionLocal(). (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()vàLocalViewModelStoreOwnerđã được di chuyển từandroidx.compose.ui.viewinteropsang cấu phần phần mềm này trong góiandroidx.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
NonNullableMutableLiveDatanay 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ợ
SavedStateHandlecho các lớp không đóng gói được:SavedStateHandlenay 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ọisetSavedStateProvider()cho một khoá nhất định, cung cấp mộtSavedStateProvidersẽ nhận lệnh gọi lạisaveState()khiSavedStateHandleđượ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
DESTROYEDdưới dạng một trạng thái đầu cuối. LifecycleRegistrygiờ đâ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ượngLifecycleRegistrydo 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ùngLifecycleRegistry.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 khiLifecycleRegistrynày được truy cập qua luồng (thread) khác.
- LifecycleRegistry giờ đây thực thi
- 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àoLifecycle.Eventđể tạoEventkhi cóStatevà hướng chuyển đổi. Thêm phương thứcgetTargetState()cung cấpStatemà Lifecycle hoạt động sẽ chuyển đổi trực tiếp theoEvent. withStateAtLeast: Thêm các APILifecycle.withStateAtLeastchờ 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ứcwhen*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: APIViewTreeLifecycleOwner.get(View)vàViewTreeViewModelStoreOwner.get(View)mới cho phép bạn truy xuấtLifecycleOwnervàViewModelStoreOwnerchứa tương ứng, khi có một thực thểView. Bạn phải nâng cấp lên Activity1.2.0và Fragment1.3.0và AppCompat 1.3.0-alpha01 trở lên để thông tin được điền sẵn chính xác. Tiện ích Kotlin củafindViewTreeLifecycleOwnervàfindViewTreeViewModelStoreOwnerlần lượt có sẵn tronglifecycle-runtime-ktxvàlifecycle-viewmodel-ktx. - Ngừng cung cấp tiện ích Kotlin
LiveData.observe(): Tiện ích KotlinLiveData.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ủaSavedStateHandlehiệ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ớisetSavedStateProvider()ngoài các khoá dùng vớiset()vàgetLiveData(). (aosp/1517919, b/174713653)
Đóng góp bên ngoài
- Các API dùng để tạm ngưng các coroutine nhận biết được vòng đời hiện xử lý các lệnh gọi tới
yield()hiệu quả hơn. Cảm ơn Nicklas Ansman Giertz! (aosp/1430830, b/168777346)
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
- Nâng cấp androidx để sử dụng Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Thay đổi về tài liệu
- Trình tạo
liveDatavà tài liệuasLiveData()đã đượ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àoLifecycle.Eventđể tạoEventkhi có mộtStatevà hướng chuyển đổi. Thêm phương thứcgetTargetState()cung cấpStatemà Lifecycle hoạt động sẽ chuyển đổi trực tiếp theoEvent. (I00887) - Thêm các API
Lifecycle.withStateAtLeastchờ 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ứcwhen*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
DESTROYEDdưới dạng một trạng thái đầu cuối. (I00887) LifecycleRegistrygiờ đâ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ượngLifecycleRegistrydo 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ụngLifecycleRegistry.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 khiLifecycleRegistrynà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
ObsoleteLintCustomCheckcho các lượt kiểm tra tìm lỗi mã nguồn đi kèmlifecycle-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,
LiveDatasẽ 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 đếnonActive()hoặconInactive(). (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
NonNullableMutableLiveDatahiện bao gồm nhiều trường hợp hơn đáng kể, trong đó giá trịnullđược đặt trênMutableLiveDatacó 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
SavedStateHandlenay 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ọisetSavedStateProvider()cho một khoá nhất định. Lệnh này cung cấp mộtSavedStateProviderđể gọi lạisaveState()khiSavedStateHandleđượ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ấtViewModelStoreOwnerchứa khi có một thực thểView. Bạn cần nâng cấp lên Activity1.2.0-alpha05, Fragment1.3.0-alpha05và AppCompat1.3.0-alpha01trở lên để thông tin được điền sẵn chính xác. Thêm một tiện ích KotlinfindViewModelStoreOwner()vàolifecycle-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)
MutableLiveDataphát hành trong Lifecycle2.3.0-alpha01không phát hành được cùng với cấu phần phần mềmlifecycle-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ộtApplicationrỗ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ấtLifecycleOwnerchứa khi có một thực thểView. Bạn phải nâng cấp lên Activity1.2.0-alpha01và Fragment1.3.0-alpha01để thông tin được điền sẵn chính xác. Tiện ích KotlinfindViewTreeLifecycleOwnercó sẵn tronglifecycle-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ị
nulltrênMutableLiveDatađã đượ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ềmlivedata-core-ktxhoặclivedata-ktx. (aosp/1154723, aosp/1159092) - Nay có một cấu phần phần mềm
lifecycle-runtime-testingmới cung cấp mộtTestLifecycleOwnertriển khaiLifecycleOwnervà cung cấp mộtLifecyclebiế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-runtimenay 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-ktxmới bổ sung khả năng tích hợp giữa các nhóm coroutine Lifecycle và Kotlin.lifecycle-livedata-ktxcũ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ềnFragmenthoặcFragmentActivitytới hàm khởi tạoViewModelProvider(ViewModelStoreOwner)mới để sử dụng cùng một chức năng khi sử dụng Mảnh1.2.0. - Không dùng cấu phần phần mềm
lifecycle-extensionsnữa: Với việc ngừng sử dụngViewModelProviders.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 tronglifecycle-extensionsvà 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-servicenếu bạn đang sử dụngLifecycleServicevàlifecycle-processnếu đang sử dụngProcessLifecycleOwner) thay vìlifecycle-extensionsvì sau này sẽ không còn bản phát hành2.3.0cholifecycle-extensionsnữ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ụngLifecycleEventObserver.
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
ViewModelmô phỏng được lưu trữ trongViewModelStorevà được truy vấn sau đó bằng nhà máy mặc định. - Khắc phục việc sử dụng
Dispatchers.Main.immediatetronglaunchWhenCreatedvà 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 đề
launchWhenCreatedvà 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ụngDispatchers.Mainthay 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ự
ProcessLifecycleOwnervàLifecycleOwnercủ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-alpha05sẽ gây raNullPointerExceptionkhi sử dụng phiên bản2.0.0hoặc2.1.0củalifecycle-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,viewModelScopevà hoạt động triển khai cơ bản củaliveDatanay sử dụngDispatchers.Main.immediatethay 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
- Giờ đây, việc triển khai
ViewModelStoreOwnercó thể tuỳ chọn triển khaiHasDefaultViewModelProviderFactoryđể cung cấpViewModelProvider.Factorymặc định. Chúng tôi đã thực hiện việc này cho Activity1.1.0-alpha02, Fragment1.2.0-alpha02và Navigation2.2.0-alpha01. (aosp/1092370, b/135716331)
Thay đổi về API
- Ngừng sử dụng
ViewModelProviders.of(). Bạn có thể truyềnFragmenthoặcFragmentActivitytới hàm khởi tạoViewModelProvider(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.initialValuebằngLiveDataScope.latestValue, giúp theo dõi giá trị phát ra hiện tại của khốiliveData. - Thêm quá tải (overload) mới vào trình tạo
liveDatanhận được tham sốtimeoutdưới dạngDuration
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
ViewModelcủ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ớpViewModelvà nhà máy do các mảnh cung cấp theo mặc định. AppCompatActivity sẽ tự động chènSavedStateHandle. - Thêm AbstractSavedStateViewModelFactory. Thuộc tính này cho phép bạn tạo nhà máy tuỳ chỉnh cho
ViewModelcũng như cấp quyền truy cập vàoSavedStateHandle.
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 đếnIllegalStateException. (b/139093676) - Khắc phục
IllegalStateExceptionkhi sử dụngAbstractSavedStateViewModelFactory. (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
SavedStateViewModelFactorykhông còn mở rộngAbstractSavedStateViewModelFactoryvàSavedStateHandlechỉ đượ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-savedstatekhông còn phụ thuộc vàofragment, đồng thời các hàm khởi tạoSavedStateViewModelFactory(Fragment)vàSavedStateViewModelFactory(FragmentActivity)liên quan đã bị xoá. Thay vào đó,SavedStateViewModelFactorynay là trạng thái ban đầu của Activity1.1.0-alpha02, Fragment1.2.0-alpha02và Navigation2.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
SavedStateVMFactorythànhSavedStateViewModelFactory. - Đổi tên
AbstractSavedStateVMFactorythànhAbstractSavedStateViewModelFactory.
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ờ,
ViewModelscó thể đóng góp vào savedstate. Để làm điều đó, hãy sử dụng giá trịSavedStateVMFactorymớ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ượngSavedStateHandledướ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
LifecycleEventObservercho 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ớpGenericLifecycleObserverẩn. - Thêm tiện ích ktx cho các phương thức
LiveData.observevà phương thứcTransformations.*. - 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ồnLiveDatađượ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ạyViewModelvớ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()vàby activityViewModels()đã được thay đổi để hỗ trợ trực tiếpViewModelStore, thay vì chỉ mộtViewModelStoreOwner. (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àiViewModelProvider.Factorykhô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 Kotlinby 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
LifecycleRegistrynay chứa phương thứcsetCurrentState()thay thế phương thứcsetState()hiện không được dùng nữa. (aosp/880715)
Sửa lỗi
- Khắc phục sự cố thực thể
ViewModelmô phỏng sẽ gặp sự cố khiViewModelStorechứ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
LifecycleEventObservercho 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ớpGenericLifecycleObserverẩn. - Thêm tiện ích ktx cho các phương thức
LiveData.observevà phương thứcTransformations.*. - Thêm phương thức
Transformations.distinctUntilChanged. Phương thức này tạo một đối tượngLiveDatamớ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ậnkeyvàClasstrong phương thứccreate.
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.0android.arch.lifecycle:viewmodel:1.1.0
Thay đổi API
LifecycleActivityvàLifecycleFragmentkhông dùng nữa hiện đã bị xoá – vui lòng sử dụngFragmentActivity,AppCompatActivityhoặc hỗ trợFragment.- Thêm chú thích
@NonNullvàoViewModelProvidersvàViewModelStores - 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.DefaultFactorykhông còn được dùng nữa. Vui lòng sử dụngViewModelProvider.AndroidViewModelFactory- Phương thức
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)tĩnh được thêm vào để truy xuấtFactorytĩnh thích hợp cho việc tạo các phiên bảnViewModelvàAndroidViewModel.