مراحل النشاط
يسرد هذا الجدول جميع العناصر في المجموعة androidx.lifecycle
.
العناصر | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
lifecycle-* | 2.9.1 | - | - | - |
lifecycle-viewmodel-navigation3 | - | - | - | 1.0.0-alpha03 |
تعريف التبعيات
لإضافة تبعية إلى Lifecycle، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle
لتطبيقك أو وحدتك:
Kotlin
رائع
dependencies { def lifecycle_version = "2.9.1" 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:1.0.0-alpha03" // 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.1" 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:1.0.0-alpha03") // 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
رائع
dependencies { def lifecycle_version = "2.9.1" 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.1" 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") }
لمزيد من المعلومات حول العناصر التابعة، يُرجى الاطّلاع على إضافة عناصر تابعة للإنشاء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
Lifecycle ViewModel Navigation3 الإصدار 1.0.0
الإصدار 1.0.0-alpha03
2 يوليو 2025
تم طرح androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha03
وandroidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha03
. يحتوي الإصدار 1.0.0-alpha03 على عمليات الدمج هذه.
التغييرات في التبعيات
- تعتمد حزمة Lifecycle ViewModel Navigation 3 الآن على Navigation3 Alpha05
الإصدار 1.0.0-alpha02
18 يونيو 2025
تم طرح androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha02
وandroidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha02
. يحتوي الإصدار 1.0.0-alpha02 على عمليات الإيداع هذه.
تحديثات التبعيات
- تعتمد حزمة Lifecycle ViewModel Navigation3
1.0.0-alpha02
على التغييرات في حزمة Navigation31.0.0-alpha04
. (Icd0fd, b/420991203)
الإصدار 1.0.0-alpha01
23 مايو 2025
تم طرح androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha01
. يحتوي الإصدار 1.0.0-alpha01 على عمليات الدمج هذه.
الميزات الجديدة
- Lifecycle ViewModel Navigation3 هي مكتبة جديدة تم إنشاؤها جنبًا إلى جنب مع Navigation3 لتوفير عمليات دمج مع
ViewModels
. يوفّر العنصرandroidx.lifecycle:lifecycle-viewmodel-navigation3
ViewModelStoreNavEntryDecorator
الذي يوفّرViewModelStoreOwner
فريدًا لمحتوى كلNavEntry
. ويوفّر أيضًاrememberViewModelStoreNavEntryDecorator()
لضمان أن يتم التعامل مع أداة التزيين بشكل صحيح من خلال تغييرات الإعدادات.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
الإصدار 2.9
الإصدار 2.9.1
4 يونيو 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.1
. يحتوي الإصدار 2.9.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- إصلاح مشكلة عدم محو حالات
SavedStateHandle.remove(key)
SavedStateHandle.getMutableStateFlow(key)
(d5f939، b/418746333)
الإصدار 2.9.0
7 مايو 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.0
. يحتوي الإصدار 2.9.0 على عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.8.0
- يتوفّر عنصر
androidx.lifecycle:lifecycle-viewmodel-testing
KMP جديد يوفّر فئةViewModelScenario
لاختبارViewModels
بشكل منفصل، مع إتاحةonCleared
وSavedStateHandle
بالإضافة إلى اختبار إيقاف العملية وإعادة إنشائها من خلالrecreate()
. - أضِف
getMutableStateFlow
إلىSavedStateHandle
لعرضMutableStateFlow
. هذه الدالة الجديدة حصرية للمفتاح ولا يمكن استخدامها معgetLiveData
. سيتم عرض استثناء إذا حاولت استخدام كليهما للوصول إلى الحالة نفسها. - يتضمّن الإصدار
CreationExtras
الآن عمليات تحميل زائدة لعوامل التشغيل تشبه الخرائط من أجل إتاحة معالجة المحتوى بطريقة اصطلاحية في Kotlin. تتيح هذه الميزة استخدامin
و+=
و+
معCreationExtras
.
توافق KotlinX Serialization
من خلال إضافة دعم KotlinX Serialization في SavedState
1.3.0
، قدّمناsaved
، وهو عنصر تحكّم كسول في الخصائص، لتسهيل تخزين فئات@Serializable
فيSavedStateHandle
واستعادة هذه الفئات تلقائيًا عند إيقاف العملية وإعادة إنشائها. يُرجى ملاحظة أنّsaved
المفوَّض كسول ولن يستدعي تعبير lambdainit
أو يحفظ أي شيء فيSavedStateHandle
إلى أن يتم الوصول إليه.@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
- أصبح بإمكان الوحدة
lifecycle-testing
الآن العمل مع KMP، بما في ذلك واجهات برمجة التطبيقات مثلTestLifecycleOwner
. - أصبح بإمكان الوحدة
lifecycle-viewmodel-savedstate
الآن العمل مع KMP، بما في ذلك واجهات برمجة التطبيقات مثلSavedStateHandle
. - يتوفّر
androidx.compose.ui.platform.LocalLifecycleOwner
الآن في مجموعة المصادر الشائعة. - أصبحت السمة
NewInstanceFactory
متاحة الآن على أجهزة الكمبيوتر المكتبي وأجهزة Android التي تستخدم JVM.
التغييرات في السلوك
- الحالة
Lifecycle.DESTROYED
هي حالة نهائية، وأي محاولة لنقلLifecycle
منها إلى أي حالة أخرى ستؤدي الآن إلى ظهورIllegalStateException
. - لم يعُد
SavedStateHandle
يتضمّن أيSavedStateProvider.saveState()
تكون فيها قيمةBundle
المعروضة فارغة.
الإصدار 2.9.0-rc01
23 أبريل 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-rc01
. يحتوي الإصدار 2.9.0-rc01 على عمليات الدمج هذه.
الإصدار 2.9.0-beta01
9 أبريل 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-beta01
. يحتوي الإصدار 2.9.0-beta01 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تستخدم
Lifecycle ViewModel Compose
الآن إعداد Kotlin Multiplatform نفسه المستخدَم في Compose Runtime 1.7.1 والإصدارات الأحدث، وتمت إزالة عناصر-desktop
وإضافة عناصر-jvmStubs
و-linuxx64Stubs
. لا يُفترض استخدام أي من هذه الأهداف، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose. (I5cb14، b/406592090)
تحديثات التبعيات
- تستهدف هذه المكتبة الآن مستوى لغة Kotlin 2.0 وتتطلّب الإصدار 2.0.0 أو إصدارًا أحدث من KGP. (Idb6b5)
- يعتمد الإصدار
Lifecycle ViewModel Compose
الآن على Compose 1.7.8. (I5cb14، b/406592090)
الإصدار 2.9.0-alpha13
26 مارس 2025
تم إصدار androidx.lifecycle:lifecycle-*:2.9.0-alpha13
بدون أي تغييرات عامة مهمة. يحتوي الإصدار 2.9.0-alpha13 على عمليات الدمج هذه.
الإصدار 2.9.0-alpha12
12 مارس 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha12
. يحتوي الإصدار 2.9.0-alpha12 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- أضِف التعليق التوضيحي
@MainThread
إلىViewModelProvider.get
في جميع منصات KMP المتوافقة. (I7e8dd، b/397736115) - أعِد تسمية
SavedState*Delegates
إلىSavedState*Delegate
. (I8589b، b/399629301)
الإصدار 2.9.0-alpha11
26 فبراير 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha11
. يحتوي الإصدار 2.9.0-alpha11 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- إضافة المَعلمة
SavedStateConfig
إلى مفوَّضيsaved()
(I39b3a)
الإصدار 2.9.0-alpha10
12 فبراير 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha10
. يحتوي الإصدار 2.9.0-alpha10 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- نقل
MutableStateSerializer
إلىsavedstate-compose
منlifecycle-viewmodel-compose
(I4f690، b/378895074)
المساهمة الخارجية
- تضيف هذه القاعدة مشكلة جديدة في Lint عند استدعاء
Lifecycle::currentState
في التركيب، وتقترح بدلاً من ذلك استخدامcurrentStateAsalue().value
لضمان أن تؤدي التغييرات في حالة Lifecycle إلى إعادة التركيب بشكل صحيح. شكرًا "ستيفن شون"! (Iad484)
الإصدار 2.9.0-alpha09
29 يناير 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha09
. يحتوي الإصدار 2.9.0-alpha09 على عمليات الدمج هذه.
الميزات الجديدة
- أضِف
MutableStateSerializer
لتسلسلandroidx.compose.runtime.MutableState
. (Idfc48، b/378895074)
تغييرات واجهة برمجة التطبيقات
- استبدال دوال تفويض
SavedStateHandle.saved()
المحمّلة بشكل زائد بالمعلمات التلقائية (Icd1c1) - تم إيقاف
AbstractSavedStateViewModelFactory
نهائيًا لأنّه ينشئSavedStateHandle
لكلViewModel
، ما يؤدي إلى زيادة غير ضرورية في الحمل. استخدِمViewModelProvider.Factory
معCreationExtras.createSavedStateHandle
بدلاً من ذلك لإنشاءViewModel
أكثر فعالية. (Ia920b، b/388590327)
الإصدار 2.9.0-alpha08
11 ديسمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha08
. يحتوي الإصدار 2.9.0-alpha08 على عمليات الدمج هذه.
الميزات الجديدة
- أضِف
ViewModelScenario.recreate
لمحاكاة عملية إيقاف النظام وإعادة إنشاءViewModel
قيد الاختبار وجميع المكوّنات المرتبطة به. (Id6a69، b/381063087) - يمكن الآن حلّ مثيلات
LifecycleOwner
وViewModelStoreOwner
التي تم استردادها من خلال واجهات برمجة التطبيقاتfindViewTree
الخاصة بها من خلال العناصر الرئيسية المنفصلة لعرض، مثلViewOverlay
. لمزيد من المعلومات عن عناصر العرض المنفصلة الرئيسية، يُرجى الاطّلاع على ملاحظات الإصدار الأساسية أو المستندات فيViewTree.setViewTreeDisjointParent
. (I800f4)
تغييرات واجهة برمجة التطبيقات
- جعل التسميات وتنظيم الحِزم أكثر اتساقًا مع
SavedStateRegistryOwnerDelegate
(I8c135، b/376026744)
إصلاح الأخطاء
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية في JSpecify، وهي تعليقات توضيحية خاصة بالاستخدام. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict
(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من المترجم البرمجي للغة Kotlin). (Ie4340، b/326456246) - مستند تسلسل محو
ViewModel.onCleared
(I586c7، b/363984116)
الإصدار 2.9.0-alpha07
13 نوفمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha07
. يحتوي الإصدار 2.9.0-alpha07 على عمليات الدمج هذه.
التوافق مع Kotlin Multiplatform
- أصبحت دورة الحياة
ViewModel SavedState
متوافقة الآن مع KMP. يتيح لك ذلك استخدامSavedStateHandle
في الرمز البرمجي الشائع. (Ib6394، b/334076622)
توافق KotlinX Serialization
من خلال إضافة دعم KotlinX Serialization في SavedState
1.3.0-alpha05
، قدّمناsaved
، وهو عنصر تحكّم كسول في الخصائص، لتسهيل تخزين فئات@Serializable
فيSavedStateHandle
واستعادة هذه الفئات تلقائيًا عند إيقاف العملية وإعادة إنشائها. يُرجى ملاحظة أنّsaved
المفوَّض كسول ولن يستدعي تعبير lambdainit
أو يحفظ أي شيء فيSavedStateHandle
إلى أن يتم الوصول إليه. (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 } }
تغييرات واجهة برمجة التطبيقات
- أضِف
getMutableStateFlow
إلىSavedStateHandle
لعرضMutableStateFlow
. هذه الدالة الجديدة حصرية للمفتاح ولا يمكن استخدامها معgetLiveData
. سيتم عرض استثناء إذا حاولت استخدام كليهما للوصول إلى الحالة نفسها. (I04a4f، b/375408415)
الإصدار 2.9.0-alpha06
30 أكتوبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha06
. يحتوي الإصدار 2.9.0-alpha06 على عمليات الإيداع هذه.
التغييرات في السلوك
- الحالة
Lifecycle.DESTROYED
هي حالة نهائية، وأي محاولة لنقلLifecycle
منها إلى أي حالة أخرى ستؤدي الآن إلى ظهورIllegalStateException
. (I116c4، b/370577987) - لم يعُد
SavedStateHandle
يتضمّن أيSavedStateProvider.saveState()
تكون فيها قيمةBundle
المعروضة فارغة. (I910b5، b/370577987)
إصلاح الأخطاء
- يتم الآن إكمال
Lifecycle.eventFlow
بشكل صحيح عندما تكون قيمةLifecycle
هيDESTROYED
(I293b2، b/374043130)
الإصدار 2.9.0-alpha05
16 أكتوبر 2024
تم إصدار androidx.lifecycle:lifecycle-*:2.9.0-alpha05
بدون أي تغييرات ملحوظة. يحتوي الإصدار 2.9.0-alpha05 على عمليات الدمج هذه.
الإصدار 2.9.0-alpha04
2 أكتوبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha04
. يحتوي الإصدار 2.9.0-alpha04 على عمليات الدمج هذه.
Kotlin Multiplatform
- تم الآن ضبط وحدة
lifecycle-viewmodel-savedstate
لتكون متوافقة مع KMP استعدادًا لإتاحة واجهات برمجة التطبيقات، مثلSavedStateHandle
، في مجموعة المصادر المشتركة في إصدار مستقبلي. (I503ed وI48764 وb/334076622)
الإصدار 2.9.0-alpha03
18 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha03
. يحتوي الإصدار 2.9.0-alpha03 على عمليات الإيداع هذه.
إصلاح الأخطاء
- من دورة الحياة
2.8.6
: تم تحسين توافقNullSafeMutableLiveData
Lint مع عمليات التحويل الذكي، ما يؤدي إلى تجنُّب النتائج الموجبة الخاطئة. (85fed6، b/181042665)
تحديثات التبعيات
- من مكتبة Lifecycle
2.8.6
: تعتمد مكتبة Lifecycle Runtime Compose الآن على مكتبة Compose Runtime1.7.1
- يعتمد وقت تشغيل Lifecycle الآن على ProfileInstaller
1.4.0
الإصدار 2.9.0-alpha02
4 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha02
. يحتوي الإصدار 2.9.0-alpha02 على عمليات الدمج هذه.
إصلاح الأخطاء
- من دورة الحياة
2.8.5
: عدِّل قواعدandroidx.lifecycle.ReportFragment
ProGuard للسماح بالتشويش . (ff898e1)
المساهمة الخارجية
- نقل
androidx.compose.ui.platform.LocalLifecycleOwner
إلى مجموعة المصادر المشتركة (KMP) نشكر "إيفان ماتكوف" من JetBrains على مساهمته. (8cd5d03) - من دورة الحياة
2.8.5
: أصبح تفويض إضافة `SavedStateHandle.saveable` يتيح الآن استخدام قيم تقبل القيم الخالية. نشكر "رومان كالوكيويتش" على مساهمته. (0d78ea6)
الإصدار 2.9.0-alpha01
7 أغسطس 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha01
. يحتوي الإصدار 2.9.0-alpha01 على عمليات الإيداع هذه.
Kotlin Multiplatform
- أصبحت "
lifecycle-testing
" متوافقة الآن مع KMP. (Iea41e) - إضافة دعم
linuxArm64
لهدف Kotlin المتوافق مع أنظمة أساسية متعدّدة (I139d3، b/338268719)
الميزات الجديدة
- يتوفّر عنصر
androidx.lifecycle:lifecycle-viewmodel-testing
KMP جديد يوفّر فئةViewModelScenario
لاختبار ViewModels بشكل مستقل، مع إتاحةonCleared
(جميع الأنظمة الأساسية) وSavedStateHandle
(نظام Android فقط). (337f68d, c9b3409, 9799a95c, b/264602919) - أصبحت عملية إنشاء
ViewModel
باستخدامViewModelProvider
آمنة الآن، وتمت إزالة التعليقات التوضيحية@MainThread
. (Ifd978، b/237006831)
تغييرات واجهة برمجة التطبيقات
- أضِف دالة المصنع
CreationExtras.Key()
لتبسيط عملية إنشاء عناصرCreationExtras.Key
مجهولة الهوية. (I970ee) - يتضمّن الإصدار
CreationExtras
الآن عمليات تحميل زائدة لعوامل التشغيل تشبه الخرائط من أجل إتاحة معالجة المحتوى بطريقة اصطلاحية في Kotlin. تتيح هذه الميزة استخدامin
و+=
و+
معCreationExtras
. (Ib4353) - تتضمّن
CreationExtras
الآن طرقequals
وhashCode
وtoString
. (Ib4353) - أصبحت السمة
NewInstanceFactory
متاحة الآن على أجهزة الكمبيوتر المكتبي وأجهزة Android التي تستخدم JVM. (d3d0892) - خاصية الإضافة المضمّنة لعرض التطبيق الأساسي بأمان في الإصدار 2.0 من لغة Kotlin (I39df2)
إصلاح الأخطاء
- تمت إزالة التحديد اليدوي لإمكانية الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "مكوّن Android الإضافي" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "مكوّن Android الإضافي" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (If6b4c، b/345472586)
الإصدار 2.8
الإصدار 2.8.7
30 أكتوبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.7
. يحتوي الإصدار 2.8.7 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- أصبحت
androidx.compose.ui.platform.LocalLifecycleOwner
متاحة الآن في مجموعة المصادر المشتركة (KMP). (6a3f5b3) lifecycle-runtime-compose
: تمت إزالةdesktop
عنصر وإضافة-jvmStubs
و-linuxx64Stubs
عنصر. لا يُفترض استخدام أي من هذه الأهداف، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose. (6a3f5b3)
الإصدار 2.8.6
18 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.6
. يحتوي الإصدار 2.8.6 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم تحسين دعم أخطاء
NullSafeMutableLiveData
Lint لعمليات التحويل الذكي، ما يؤدي إلى تجنُّب النتائج الإيجابية الخاطئة. (85fed6، b/181042665)
تحديثات التبعيات
- تعتمد مكتبة Lifecycle Runtime Compose الآن على Compose Runtime
1.7.1
الإصدار 2.8.5
4 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.5
. يحتوي الإصدار 2.8.5 على عمليات الدمج هذه.
إصلاح الأخطاء
- عدِّل
androidx.lifecycle.ReportFragment
قواعد ProGuard للسماح بالتشويش . (ff898e1)
المساهمة الخارجية
- يمكن الآن استخدام قيم تقبل القيم الخالية في وكيل إضافة
SavedStateHandle.saveable
. نشكر "رومان كالوكيويتش" على مساهمته. (0d78ea6)
الإصدار 2.8.4
24 يوليو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.4
. يحتوي الإصدار 2.8.4 على عمليات الدمج هذه.
إصلاح الأخطاء
- تعالج السمة
LiveData.asFlow()
الآن بشكلٍ صحيح الحالات التي يتم فيها إكمال Flow الذي تم عرضه مباشرةً بعد تلقّي قيمة تم ضبطها مسبقًا علىLiveData
(على سبيل المثال، عند استخدامtake(1)
). (I9c566) - أصبحت عملية إكمال
Lifecycle*Effect
الآن غير متكررة (أي إذا تم استدعاءonStopOrDispose
بسبب إيقاف Lifecycle، لن يتم استدعاؤه مرة ثانية عند التخلص منه ما لم يعُد Lifecycle إلىSTARTED
مرة أخرى). (I5f607، b/352364595)
الإصدار 2.8.3
1 يوليو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.3
. يحتوي الإصدار 2.8.3 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم التوافق مع الإصدارات السابقة في Lifecycle 2.8 مع الإصدار 1.6.0 من Compose والإصدارات الأقدم عند استخدام تصغير الرمز البرمجي. (aosp/3133056، b/346808608)
الإصدار 2.8.2
12 يونيو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.2
. يحتوي الإصدار 2.8.2 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح أخطاء
CompositionLocal LocalLifecycleOwner not present
عند استخدام الإصدار 2.8.X من Lifecycle مع الإصدار 1.6.X من Compose أو إصدار أقدم. يمكنك الآن استخدام الإصدار 2.8.2 من Lifecycle مع أي إصدار من Compose بدون الحاجة إلى أي حلول بديلة. (aosp/3105647، b/336842920) - لن يتعطّل
ViewModelProvider
بعد الآن عند دمج الإصدارات السابقة من تبعياتcompileOnly
Lifecycle مع الإصدارات 2.8 والإصدارات الأحدث، ما يؤدي إلى حلّ المشاكل في المكتبات، مثل LeakCanary. (I80383، b/341792251)
الإصدار 2.8.1
29 مايو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.1
. يحتوي الإصدار 2.8.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- تعتمد السمة
lifecycle-viewmodel-compose
الآن على السمةcompose-runtime
فقط، وتمت إزالة اعتمادها على السمةcompose-ui
. يحتفظ عنصر Android بـcompose-ui
لضمان التوافق. (aosp/3079334 وb/339562627) - تستخدم عملية دمج
saveable
فيViewModel
باستخدام عناصر تحكّم في الخصائص الآن اسم الفئة كجزء من المفتاح الذي يتم إنشاؤه تلقائيًا، ما يمنع حدوث تعارضات إذا كانت فئات متعددة تستخدمSavedStateHandle
نفسه. (aosp/3063463)
الإصدار 2.8.0
14 مايو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0
. يحتوي الإصدار 2.8.0 على عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.7.0
- تم نقل
LocalLifecycleOwner
من واجهة مستخدم Compose إلىlifecycle-runtime-compose
حتى يمكن استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة مستخدم Compose. - يحتوي العنصر
lifecycle-runtime-compose
الآن على واجهتَي برمجة التطبيقاتdropUnlessResumed
وdropUnlessStarted
اللتين تسمحان لك بإيقاف النقرات أو الأحداث الأخرى التي تحدث حتى بعد أن ينخفضLifecycleOwner
إلى ما دونLifecycle.State
المحدّد. على سبيل المثال، يمكن استخدام ذلك مع Navigation Compose لتجنُّب معالجة أحداث النقر بعد أن يبدأ الانتقال إلى شاشة أخرى:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
أصبحت
ViewModel.viewModelScope
الآن مَعلمة إنشاء قابلة للتجاهل، ما يتيح لك إدخال أداة إرسال خاصة بك وSupervisorJob()
أو تجاهل الإعداد التلقائي باستخدامbackgroundScope
المتاح ضمنrunTest
. (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
بلغة Kotlin، وأصبحت تستخدم الآنAutoClosable
بدلاً منCloseable
. يتيح الآن إضافة عناصرAutoCloseable
معkey
يسمح باستردادها عبرgetCloseable()
.أصبح استدعاء
LifecycleStartEffect
وLifecycleResumeEffect
بدون مفتاح خطأ الآن، وذلك وفقًا للأسلوب نفسه الذي تتّبعه واجهة برمجة التطبيقاتDisposableEffect
التي تحاكيها هاتان الواجهتان.تم إيقاف
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
نهائيًا واستبداله بـLiveData.toPublisher(lifecycleOwner)
.تم الآن نقل إضافات
lifecycle-livedata-core-ktx
Kotlin إلى الوحدةlifecycle-livedata-core
.تمت إعادة تصميم
NullSafeMutableLiveData
لتجنُّب العديد من النتائج الإيجابية الخاطئة.
توافق Lifecycle مع Kotlin Multiplatform
تتوفّر الآن واجهات برمجة التطبيقات الأساسية لدورة الحياة في Lifecycle
وLifecycleOwner
وLifecycleObserver
وLifecycle.State
وLifecycle.Event
وLifecycleRegistry
في عناصر متوافقة مع Kotlin Multiplatform.
العناصر المتأثرة:
- تنقل
lifecycle-common
معظم واجهات برمجة التطبيقات إلىcommon
وتتيح استخدام jvm وiOS بالإضافة إلى Android. - تنقل
lifecycle-runtime
معظم واجهات برمجة التطبيقات إلىcommon
وتتيح استخدام jvm وiOS بالإضافة إلى Android. - أصبحت
lifecycle-runtime-ktx
فارغة الآن، وتم نقل جميع واجهات برمجة التطبيقات إلىlifecycle-runtime
. - تنقل
lifecycle-runtime-compose
جميع واجهات برمجة التطبيقات إلىcommon
وتوفّر عنصر Android مطابقًا لإمكانية التوافق مع عدة منصات فيandroidx.compose
.
توافق ViewModel مع Kotlin Multiplatform
يتم الآن شحن العنصر lifecycle-viewmodel
وواجهات برمجة التطبيقات مثل ViewModel
وViewModelStore
وViewModelStoreOwner
وViewModelProvider
في عناصر متوافقة مع Kotlin Multiplatform.
لاستيعاب هذا التغيير، أصبحت الطرق التي كانت تستغرق java.lang.Class<T>
، مثل تلك المتوفّرة في ViewModelProvider
، تتضمّن الآن طريقة مكافئة تستغرق kotlin.reflect.KClass<T>
.
تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة واجهة برمجة التطبيقات المشتركة:
- يتم الآن إنشاء مثيل
ViewModelProvider
من خلال طرقViewModelProvider.create()
بدلاً من استدعاء أداة الإنشاء مباشرةً. - ولا يتوفّر كل من
ViewModelProvider.NewInstanceFactory
وViewModelProvider.AndroidViewModelFactory
إلا على أجهزة Android.- يُنصح باستخدام "المصانع المخصّصة" لتوسيع نطاق
ViewModelProvider.Factory
واستخدام طريقةcreate
التي تأخذCreationExtras
أو استخدامviewModelFactory
Kotlin DSL.
- يُنصح باستخدام "المصانع المخصّصة" لتوسيع نطاق
- سيؤدي استخدام
ViewModelProvider
بدون مصنع مخصّص على منصات غير JVM إلى حدوثUnsupportedOperationException
. على منصات JVM، يتم الحفاظ على التوافق من خلال استخدام الدالة الإنشائية ViewModel التي لا تتضمّن وسيطات في حال عدم توفير مصنع مخصّص. - سيتم استخدام
viewModelScope
كبديل لـEmptyCoroutineContext
في المنصات التي لا يتوفّر فيهاDispatchers.Main
(مثل Linux).
العناصر المتأثرة:
- تنقل
lifecycle-viewmodel
معظم واجهات برمجة التطبيقات إلىcommon
وتتيح استخدام jvm وiOS بالإضافة إلى Android. - أصبحت
lifecycle-viewmodel-ktx
فارغة الآن، وتم نقل جميع واجهات برمجة التطبيقات إلىlifecycle-viewmodel
. - تنقل
lifecycle-viewmodel-compose
جميع واجهات برمجة التطبيقات إلىcommon
وتوفّر عنصر Android مطابقًا لإمكانية التوافق مع عدة منصات فيandroidx.compose
.
التغييرات في السلوك
- ستعرض الدالة
InitializerViewModelFactory
(بما في ذلك دالة الإنشاءviewModelFactory
) الآن الخطأIllegalArgumentException
إذا تمت إضافةinitializer
بالاسمclazz: KClass<VM : ViewModel>
نفسه من قبل. (Ic3a36)
المشاكل المعروفة
- يتطلّب
lifecycle-*:2.8.0
الحد الأدنى من إصدار Compose وهو 1.7.0-alpha05 (b/336842920).
الإصدار 2.8.0-rc01
1 مايو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-rc01
. يحتوي الإصدار 2.8.0-rc01 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم تجميع "الملف الأساسي" لفئات
lifecycle-common
بشكلٍ صحيح. يتم الآن تجميع هذه الملفات فيlifecycle-runtime
AAR. (aosp/3038274، b/322382422) - تم إصلاح تغيير غير مقصود في ترتيب طريقة محو مثيلات
AutoCloseable
المرفقة بـ ViewModel، وتمت استعادة الترتيب السابقaddCloseable(String, AutoCloseable)
ثمaddClosable(AutoCloseable)
ثمonCleared()
. (aosp/3041632) - تحسين السلوك التلقائي لإنشاء
viewModelScope
في بيئات JVM وNative Desktop (aosp/3039221)
المساهمة الخارجية
- نشكر Victor Kropp على تحسين عملية التحقّق من السلسلة الرئيسية على JVM Desktop. (aosp/3037116)
الإصدار 2.8.0-beta01
17 أبريل 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-beta01
. يحتوي الإصدار 2.8.0-beta01 على عمليات الدمج هذه.
الميزات الجديدة
- أصبح العنصر
lifecycle-runtime-compose
متوافقًا الآن مع Kotlin Multiplatform، وتم نقل رمزه إلىcommon
، كما يتم شحن عنصر Android، بما يتوافق مع إمكانية استخدامandroidx.compose
على أنظمة أساسية متعدّدة. (If7a71، I4f4a0، b/331769623)
الإصدار 2.8.0-alpha04
3 أبريل 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha04
. يحتوي الإصدار 2.8.0-alpha04 على عمليات الدمج هذه.
الميزات الجديدة
- أصبح العنصر
lifecycle-viewmodel-compose
متوافقًا الآن مع Kotlin Multiplatform، وتم نقل رمزه إلىcommon
، كما يتم شحن عنصر Android، بما يتوافق مع إمكانية استخدامandroidx.compose
على أنظمة أساسية متعدّدة. لاستيعاب هذا التغيير، تقبل الآن الدالة البرمجية ComposableviewModel
وسيطةKClass
بالإضافة إلىjava.lang.Class
. (b/330323282)
إصلاح الأخطاء
- تمت إعادة تصميم
NullSafeMutableLiveData
لتجنُّب العديد من النتائج الإيجابية الخاطئة. (I2d8c1 وIafb18 وI03463 وI7ecef)
تعديل التبعية
- يعتمد العنصر
lifecycle-viewmodel-compose
الآن على الإصدار 1.6.0 من Compose. - يعتمد عمر التطبيق الآن على أداة تثبيت الملف الشخصي 1.3.1.
الإصدار 2.8.0-alpha03
20 مارس 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha03
. يحتوي الإصدار 2.8.0-alpha03 على عمليات الدمج هذه.
الميزات الجديدة
أصبحت
ViewModel.viewModelScope
الآن مَعلمة إنشاء قابلة للتجاهل، ما يتيح لك إدخال أداة إرسال خاصة بك وSupervisorJob()
أو تجاهل الإعداد التلقائي باستخدامbackgroundScope
المتاح ضمنrunTest
. (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) }
التوافق مع Kotlin Multiplatform
يتم الآن شحن العنصر lifecycle-viewmodel
وواجهات برمجة التطبيقات مثل ViewModel
وViewModelStore
وViewModelStoreOwner
وViewModelProvider
في عناصر متوافقة مع Kotlin Multiplatform. (b/214568825)
لاستيعاب هذا التغيير، أصبحت الطرق التي كانت تستغرق java.lang.Class<T>
، مثل تلك المتوفّرة في ViewModelProvider
، تتضمّن الآن طريقة مكافئة تستغرق kotlin.reflect.KClass<T>
.
تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة واجهة برمجة التطبيقات المشتركة:
- يتم الآن إنشاء مثيل
ViewModelProvider
من خلال طرقViewModelProvider.create()
بدلاً من استدعاء أداة الإنشاء مباشرةً. - ولا يتوفّر كل من
ViewModelProvider.NewInstanceFactory
وViewModelProvider.AndroidViewModelFactory
إلا على أجهزة Android.- يُنصح باستخدام "المصانع المخصّصة" لتوسيع نطاق
ViewModelProvider.Factory
واستخدام طريقةcreate
التي تأخذCreationExtras
أو استخدامviewModelFactory
Kotlin DSL.
- يُنصح باستخدام "المصانع المخصّصة" لتوسيع نطاق
- سيؤدي استخدام
ViewModelProvider
بدون مصنع مخصّص على منصات غير JVM إلى حدوثUnsupportedOperationException
. على منصات JVM، يتم الحفاظ على التوافق من خلال استخدام الدالة الإنشائية ViewModel التي لا تتضمّن وسيطات في حال عدم توفير مصنع مخصّص. - سيتم استخدام
viewModelScope
كبديل لـEmptyCoroutineContext
في المنصات التي لا يتوفّر فيهاDispatchers.Main
(مثل Linux).
التغييرات في السلوك
- ستعرض الدالة
InitializerViewModelFactory
(بما في ذلك دالة الإنشاءviewModelFactory
) الآن الخطأIllegalArgumentException
إذا تمت إضافةinitializer
بالاسمclazz: KClass<VM : ViewModel>
نفسه من قبل. (Ic3a36)
إصلاح الأخطاء
- يتعامل
ViewModel.getCloseable
الآن مع المفاتيح المكرّرة: إذا كانkey
يتضمّن حاليًا مصدرAutoCloseable
مرتبطًا به، سيتم استبدال المصدر القديم وإغلاقه على الفور. (Ibeb67) - أصبح الوصول إلى
viewModelScope
الخاص بـViewModel
آمنًا الآن. (If4766، b/322407038)
المساهمة الخارجية
- تم نقل
LocalLifecycleOwner
من Compose UI إلى lifecycle-runtime-compose حتى يمكن استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج Compose UI. نشكر "جيك وارتون" على مساهمته. (I6c41b، b/328263448)
الإصدار 2.8.0-alpha02
21 فبراير 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha02
. يحتوي الإصدار 2.8.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة واجهتَي برمجة التطبيقات
dropUnlessResumed
وdropUnlessStarted
اللتين تتيحان لك تجاهل النقرات أو الأحداث الأخرى التي تحدث حتى بعد انخفاضLifecycleOwner
إلى ما دونLifecycle.State
المحدّدة. على سبيل المثال، يمكن استخدام هذا الرمز مع Navigation Compose لتجنُّب معالجة أحداث النقر بعد بدء الانتقال إلى شاشة أخرى:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83، b/317230685)
Kotlin Conversions
- تمت إعادة كتابة
ViewModel
بلغة Kotlin (I16f26، b/214568825) - تم نقل
lifecycle-viewmodel-ktx
إضافات Kotlin الآن إلى وحدة دورة الحياة الأساسية. (Id787b، b/274800183) - تم نقل
lifecycle-runtime-ktx
إضافات Kotlin الآن إلى وحدة دورة الحياة الأساسية. (Ic3686، b/274800183) - تم نقل
lifecycle-livedata-core-ktx
إضافات Kotlin الآن إلى وحدة دورة الحياة الأساسية. (I54a3d، b/274800183)
التوافق مع Kotlin Multiplatform
- تتوفّر الآن واجهات برمجة التطبيقات الأساسية لدورة الحياة في
Lifecycle
وLifecycleOwner
وLifecycleObserver
وLifecycle.State
وLifecycle.Event
وLifecycleRegistry
في عناصر متوافقة مع Kotlin Multiplatform. (b/317249252)
تغييرات واجهة برمجة التطبيقات
- أصبح استدعاء
LifecycleStartEffect
وLifecycleResumeEffect
بدون مفتاح خطأ الآن، وذلك وفقًا للأسلوب نفسه الذي تتّبعه واجهة برمجة التطبيقاتDisposableEffect
التي تحاكيها هاتان الواجهتان. (Ib0e0c، b/323518079) - يتم الآن استخدام
AutoCloseable
بدلاً منCloseable
فيViewModel
. هذا تغيير متوافق مع الإصدارات القديمة. (I27f8e، b/214568825) - تم إيقاف
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
نهائيًا واستبداله بـLiveData.toPublisher(lifecycleOwner)
. (Iabe29، b/262623005)
المساهمة الخارجية
- نشكر "إيفان ماتكوف" من Jetbrains على المساعدة في نقل Lifecycle إلى Kotlin Multiplatform. (aosp/2926690، I0c5ac، If445d)
الإصدار 2.8.0-alpha01
24 يناير 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha01
. يحتوي الإصدار 2.8.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
- يتيح
ViewModel
الآن إضافة عناصرCloseable
معkey
يسمح باستردادها عبرgetCloseable()
. (I3cf63)
الإصدار 2.7
الإصدار 2.7.0
10 يناير 2024
تم طرح androidx.lifecycle:lifecycle-*:2.7.0
. يتضمّن الإصدار 2.7.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.6.0
- يتضمّن
TestLifecycleOwner
الآن دالة تعليقsetCurrentState()
تضمن اكتمال تغيير الحالة وجميع عمليات ردّ الاتصالLifecycleObserver
قبل العودة. يُرجى العِلم أنّه على عكس ضبط السمةcurrentState
مباشرةً، لا تستخدم هذه الطريقةrunBlocking
، ما يجعلها آمنة للاستخدام ضمن روتين فرعي مثل الروتين الذي توفّرهrunTest
. - تعكس الآن الإضافات
LiveData
لكل منmap
وswitchMap
سلوكdistinctUntilChanged
- إذا كانLiveData
يتضمّن مجموعةvalue
، سيتم استدعاء الدالةmap
/switchMap
على الفور لتعبئةvalue
الخاص بـLiveData
الذي تم إرجاعه. يضمن ذلك ضبط القيمة الأولية كجزء من التركيب الأول (عند استخدامها معobserveAsState()
)، ولكنّه لا يغيّر سلوك المراقبة، إذ لن يتم تطبيق قيم التحديثات من المصدرLiveData
إلا بعد بدء مراقبةLiveData
. - يحلّ هذا الإصدار مشكلة عدم استعادة فئات
Parcelable
المخصّصة بشكلٍ سليم بعد إيقاف العملية وإعادة إنشائها.SavedStateHandle
بسبب فقدان معلومات النوع من خلال إطار عمل Android، تتطلّب مصفوفات Parcelable المخصّصة عملاً إضافيًا (إنشاء مصفوفة مكتوبة يدويًا من النوع الصحيح)، وتشير المستندات حولget
وgetLiveData
وgetStateFlow
الآن تحديدًا إلى هذا القيد. - تمت إزالة قواعد Proguard keep المرتبطة بـ
LifecycleObserver
. وهذا يعني أنّ الرمز البرمجي الذي تمّت حمايته باستخدام ProGuard والذي يريد استخدام واجهات برمجة التطبيقات من خلال الانعكاس (مثل استخدام التعليق التوضيحي@OnLifecycleEvent
الذي تمّ إيقافه نهائيًا منذ فترة طويلة) سيحتاج إلى توفير قواعد الاحتفاظ الخاصة به لحالة الاستخدام المحدّدة.
مراقبة أحداث دورة الحياة
- كبديل لاستخدام
LifecycleEventObserver
، يمكنك الآن مراقبةFlow
منLifecycle.Event
من خلال طريقة إضافةLifecycle.asFlow()
. - يمكن لمستخدمي Jetpack Compose الآن استخدام
LifecycleEventEffect
لتشغيل التأثيرات الجانبية في Compose استنادًا إلىLifecycle.Event
.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- يمكن لمستخدمي Jetpack Compose استخدام
LifecycleStartEffect
وLifecycleResumeEffect
للتعامل مع أزواج الأحداث، أي من "بدأ" إلى "توقّف" ومن "استئناف" إلى "إيقاف مؤقت" على التوالي. تتطابق واجهة برمجة التطبيقات هذه مع تلك المتوفّرة فيDisposableEffect
، وهي مناسبة للحالات التي يجب فيها عكس التغيير الذي يتم إجراؤه عند الانتقال إلى الأعلى عند الرجوع إلى الأسفل.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
اطّلِع على مقالة تنفيذ الرمز البرمجي عند وقوع أحداث دورة الحياة لمزيد من المعلومات.
مراقبة حالة دورة الحياة
- يمكن الآن مراقبة
Lifecycle.State
الحالي من خلال السمةLifecycle.currentStateFlow
التي تعرضStateFlow
حيث يمثّلvalue
Lifecycle.State
الحالي. - يمكن لمستخدمي Jetpack Compose استخدام الإضافة
Lifecycle.currentStateAsState()
لعرضLifecycle.State
مباشرةً على أنّهState
في Compose. هذا التوجيه مكافئ (وبديل أقصر) للتوجيهlifecycle.currentStateFlow.collectAsState()
.
اطّلِع على مقالة جمع بيانات حالة مراحل النشاط باستخدام التدفقات للحصول على مزيد من المعلومات.
الإصدار 2.7.0-rc02
13 كانون الأول (ديسمبر) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-rc02
. يتضمّن الإصدار 2.7.0-rc02 عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى عدم استعادة فئات
Parcelable
المخصّصة بشكلٍ صحيح بعد إيقاف العملية وإعادة إنشائها.SavedStateHandle
بسبب فقدان معلومات النوع من خلال إطار عمل Android، تتطلّب مصفوفات Parcelable المخصّصة عملاً إضافيًا (إنشاء مصفوفة مكتوبة يدويًا من النوع الصحيح)، وتشير المستندات حولget
وgetLiveData
وgetStateFlow
الآن تحديدًا إلى هذا القيد. (I0b55a)
الإصدار 2.7.0-rc01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-rc01
. يحتوي الإصدار 2.7.0-rc01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تتخلص الدالتان
LifecycleStartEffect
وLifecycleResumeEffect
الآن بشكل صحيح من كتلة التأثير وتعيدان إنشاءها في حال تغييرLifecycleOwner
. (Ia25c6)
الإصدار 2.7.0-beta01
1 نوفمبر 2023
تم إصدار androidx.lifecycle:lifecycle-*:2.7.0-beta01
بدون أي تغييرات. يحتوي الإصدار 2.7.0-beta01 على عمليات الدمج هذه.
- زيادة في رقم الإصدار التجريبي، بدون إجراء تغييرات كبيرة على هذا الإصدار.
الإصدار 2.7.0-alpha03
18 أكتوبر 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha03
. يحتوي الإصدار 2.7.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- يحتوي
lifecycle-runtime-testing
الآن على عملية فحص جديدة باستخدام أداة Lint لتجنُّب ضبطLifecycle.State
الخاص بـTestLifecycleOwner
باستخدام الحقلcurrentState
عندما يكون داخل روتين فرعي. يقترح فحص Lint الآن تعليقsetCurrentState
الذي يسمح بضبطLifecycle.State
بدون حظر. (Icf728، b/297880630)
إصلاح الأخطاء
- تم إصلاح مشكلة في
LiveData.switchMap
حيث كان عرض مثيلLiveData
نفسه في كل من المكالمة الأولية والمكالمة اللاحقة يمنع إضافة مثيلLiveData
كمصدر. (Ibedcba7)
الإصدار 2.7.0-alpha02
6 سبتمبر 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha02
. يحتوي الإصدار 2.7.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
- يتضمّن
TestLifecycleOwner
الآن الدالة المعلقةsetCurrentState()
لمنح المستخدمين خيار استخدامTestLifecycleOwner
من داخل روتين فرعي، مثل الروتين الذي يوفّرهrunTest
. (I329de، b/259344129)
تغييرات واجهة برمجة التطبيقات
- تم نقل جميع الملفات من وحدات
lifecycle-livedata-ktx
إلى وحدةlifecycle-livedata
الرئيسية. (I10c6f، b/274800183)
التغييرات في السلوك
- تضبط الإضافتان
LiveData.map()
وLiveData.switchMap()
الآنvalue
لـLiveData
المعروضة إذا كانتLiveData
السابقة قد تم ضبط قيمة لها، ما يضمن أنّ استخدام LiveData الناتجة في Jetpack Compose يتضمّن الحالة الصحيحة في التركيب الأوّلي. (I91d2b، b/269479952) - يُغلق
addCloseable()
فيViewModel
الآنCloseable
على الفور إذا سبق أن تلقّىViewModel
طلبًا لإجراءonCleared()
. (I4712e، b/280294730)
إصلاح الأخطاء
- من دورة الحياة
2.6.2
: تم إصلاح مشكلة عدم استعادةSavedStateHandle
بشكل صحيح بعد إيقاف العملية إذا تمت استعادة الحالة، وتم استدعاءsave()
بدون حفظ الحالة فعليًا فيSavedStateRegistry
الأصل، ثم تمت استعادة الحالة مرة أخرى. يحلّ هذا الخطأ مشكلة التفاعل بينrememberSaveable
وNavHost
في Navigation Compose. (aosp/2729289)
الإصدار 2.7.0-alpha01
26 يوليو 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha01
. يحتوي الإصدار 2.7.0-alpha01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- يمكن الآن مراقبة
Lifecycle.State
باستخدام Compose من خلالLifecycle.currentStateFlow
، ما يؤدي إلى عرضStateFlow
حيث يكونvalue
هوLifecycle.State
الحالي. (Ib212d، b/209684871) - يمكن الآن مراقبة
Lifecycle.Event
كـFlow
معLifecycle.asFlow().
(If2c0f، b/176311030) - تمت إضافة واجهة برمجة التطبيقات
LifecycleResumeEffect
لتشغيلSideEffect
s في Compose استنادًا إلى عمليات معاودة الاتصال الخاصة بالحدثينLifecycle.Event.ON_RESUME
وLifecycle.Event.ON_PAUSE
. (I60386، b/235529345) - تمت إضافة واجهة برمجة التطبيقات
LifecycleStartEffect
لتشغيلSideEffect
Compose استنادًا إلى عمليات معاودة الاتصال بالأحداثLifecycle.Event.ON_START
وLifecycle.Event.ON_STOP
. (I5a8d1، b/235529345) - تمت إضافة واجهة برمجة التطبيقات
LifecycleEventEffect
لتشغيلSideEffect
من Compose استنادًا إلىLifecycle.Event
. (Ic9794، b/235529345) - تمت إضافة الإضافة
Lifecycle.collectAsState()
لعرضLifecycle.State
مباشرةً على أنّهState
في Compose. هذا التوجيه مكافئ (وبديل أقصر) للتوجيهlifecycle.currentStateFlow.collectAsState()
. (I11015، b/235529345)
إصلاح الأخطاء
- يضبط الآن الامتداد
LiveData.distinctUntilChanged()
السمةvalue
للعنصرLiveData
الذي تم عرضه إذا كانت السمةLiveData
السابقة تتضمّن قيمة. لا يؤدي ذلك إلى تغيير سلوك المراقبة، إذ لن يتم تطبيق القيم المعدَّلة من المصدرLiveData
إلا بعد بدء مراقبةLiveData
التي تم إرجاعها منdistinctUntilChanged()
. (Ib482f) - تمت إزالة قواعد Proguard keep المرتبطة بـ
LifecycleObserver
. وهذا يعني أنّ الرمز البرمجي الذي تمّت حمايته باستخدام ProGuard والذي يريد استخدام واجهات برمجة التطبيقات من خلال الانعكاس سيحتاج إلى توفير قواعد الاحتفاظ الخاصة به لحالة الاستخدام المحدّدة. (Ia12fd)
الإصدار 2.6
الإصدار 2.6.2
6 سبتمبر 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.2
. يتضمّن الإصدار 2.6.2 عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم استعادة
SavedStateHandle
بشكل صحيح بعد إيقاف العملية إذا تمت استعادة الحالة، وتم استدعاءsave()
بدون حفظ الحالة فعليًا في العنصر الرئيسيSavedStateRegistry
، ثم تمت استعادة الحالة مرة أخرى. يحلّ هذا الخطأ مشكلة التفاعل بينrememberSaveable
وNavHost
في Navigation Compose. (aosp/2729289)
الإصدار 2.6.1
22 مارس 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.1
. يتضمّن الإصدار 2.6.1 عمليات الدمج هذه.
تحديثات التبعيات
- يعتمد
lifecycle-viewmodel-savedstate
الآن على SavedState1.2.1
. (cd7251) - يعتمد عمر التطبيق الآن على ProfileInstaller
1.3.0
. (f9d30b)
الإصدار 2.6.0
8 مارس 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.0
. يتضمّن الإصدار 2.6.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.5.0
- يتضمّن
LiveData
الآن السمة الجديدةisInitialized
التي تشير إلى ما إذا تمّ ضبط قيمة صريحة علىLiveData
من قبل، ما يتيح لك التمييز بينliveData.value
التي تعرضnull
لأنّه لم يتمّ ضبط أيّ قيمة من قبل أو قيمةnull
صريحة. - يتضمّن
MediatorLiveData
الآن دالة إنشاء لضبط قيمة أولية. - تمت إضافة إضافة جديدة في
StateFlow
وFlow
منcollectAsStateWithLifecycle()
تجمع البيانات من التدفقات وتمثّل أحدث قيمة لها كحالة Compose بطريقة تراعي مراحل النشاط. - تم إيقاف طريقتَي
Lifecycle.launchWhenX
وLifecycle.whenX
نهائيًا لأنّ استخدام أداة إرسال مؤقتة يمكن أن يؤدي إلى إهدار الموارد في بعض الحالات. ننصحك باستخدامLifecycle.repeatOnLifecycle
. لمزيد من المعلومات حول تعليق العمل مؤقتًا، يُرجى الاطّلاع على هذا التوضيح حول سبب عدم أمان هذه العملية بطبيعتها. - تحويل Kotlin: تم تحويل عدد كبير من فئات Lifecycle إلى Kotlin. تحتفظ جميع الفئات المحوَّلة بتوافقها الثنائي مع الإصدارات السابقة. تحتوي الفئات التالية على تغييرات غير متوافقة مع المصدر للفئات المكتوبة بلغة Kotlin:
ViewTreeLifecycleOwner
وLiveDataReactiveStreams
وHasDefaultViewModelProviderFactory
وViewTreeViewModelStoreOwner
وTransformations
وViewModelStoreOwner
وLifecycleOwner
يقدّم الجدول أدناه الإحالات الناجحة المصدر للإصدار الجديد من مراحل النشاط.
مراحل النشاط 2.5 | Lifecycle 2.5 (KTX) | مراحل النشاط 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 |
- تتطابق الآن قيمة إمكانية قبول القيم الخالية لطريقة
onChanged
الخاصة بكائنObserver
تم إنشاؤه في Kotlin مع قيمة إمكانية قبول القيم الخالية للنوع العام. إذا كنت تريد أن يقبلObserver.onChanged()
نوعًا قابلاً للتصغير، يجب إنشاء مثيلObserver
بنوع قابل للتصغير. - تم أيضًا تحويل هذه الفئات إلى Kotlin، ولكنها تظل متوافقة مع المصدر:
DefaultLifecycleObserver
وLifecycleEventObserver
وLifecycle
وLifecycleRegistry
وLifecycleObserver
وViewModelStore
وAndroidViewModel
وAbstractSavedStateViewModelFactory
وLifecycleService
وServiceLifecycleDispatcher
وProcessLifecycleOwner
الإصدار 2.6.0-rc01
22 فبراير 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-rc01
. يحتوي الإصدار 2.6.0-rc01 على عمليات الإيداع التالية.
إصلاح الأخطاء
- يضبط الآن الامتداد
LiveData.distinctUntilChanged()
السمةvalue
للعنصرLiveData
الذي تم عرضه إذا كانت السمةLiveData
السابقة تتضمّن قيمة. لا يؤدي ذلك إلى تغيير سلوك المراقبة، إذ لن يتم تطبيق القيم المعدَّلة من المصدرLiveData
إلا بعد بدء مراقبةLiveData
التي تم إرجاعها منdistinctUntilChanged()
. (Ib482f)
الإصدار 2.6.0-beta01
8 شباط (فبراير) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-beta01
. يحتوي الإصدار 2.6.0-beta01 على عمليات الإيداع هذه.
Kotlin Conversions
- تمت إعادة كتابة
LifecycleOwner
بلغة Kotlin. هذا تغيير غير متوافق مع المصدر للفئات المكتوبة بلغة Kotlin، إذ يجب الآن إلغاء السمةlifecycle
بدلاً من تنفيذ الدالةgetLifecycle()
السابقة. (I75b4b، b/240298691) - أصبحت
ViewModelStoreOwner
متوفّرة الآن بلغة Kotlin. هذا تغيير غير متوافق مع المصدر للفئات المكتوبة بلغة Kotlin، إذ يجب الآن إلغاء السمةviewModelStore
بدلاً من تنفيذ الدالةgetViewModelStore()
السابقة. (I86409، b/240298691) - تم نقل إضافة Kotlin التي توفّر الحقل
lifecycleScope
فيLifecycleOwner
إلى العنصرlifecycle-common
منlifecycle-runtime-ktx
. (I41d78، b/240298691) - تم نقل إضافة Kotlin التي توفّر الحقل
coroutineScope
فيLifecycle
إلى العنصرlifecycle-common
منlifecycle-runtime-ktx
. (Iabb91، b/240298691)
الإصدار 2.6.0-alpha05
25 كانون الثاني (يناير) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha05
. يحتوي الإصدار 2.6.0-alpha05 على عمليات الدمج هذه.
Kotlin Conversions
- تمت إعادة كتابة
Transformations
بلغة Kotlin. هذا تغيير غير متوافق مع المصدر للفئات المكتوبة بلغة Kotlin والتي كانت تستخدم مباشرةً بنية مثلTransformations.map
- يجب الآن على رمز Kotlin البرمجي استخدام بنية طريقة إضافة Kotlin التي كانت متاحة سابقًا فقط عند استخدامlifecycle-livedata-ktx
. عند استخدام لغة البرمجة Java، تم إيقاف نهائيًا إصدارات هذه الطرق التي تستخدم طريقةandroidx.arch.core.util.Function
واستبدالها بالإصدارات التي تستخدمFunction1
في Kotlin. يحافظ هذا التغيير على التوافق الثنائي. (I8e14f) - تمت إعادة كتابة
ViewTreeViewModelStoreOwner
بلغة Kotlin. هذا تغيير غير متوافق مع المصدر للفئات المكتوبة بلغة Kotlin، ويجب الآن استيراد طرق إضافة Kotlin واستخدامها مباشرةً فيView
منandroidx.lifecycle.setViewTreeViewModelStoreOwner
وandroidx.lifecycle.findViewTreeViewModelStoreOwner
لضبط المالك الذي تم ضبطه سابقًا والعثور عليه. وهي متوافقة مع الرموز الثنائية وتظل متوافقة مع المصدر بالنسبة إلى عمليات التنفيذ المكتوبة بلغة البرمجة Java. (Ia06d8 وIb22d8 وb/240298691) - تمت إعادة كتابة واجهة
HasDefaultViewModelProviderFactory
باستخدام لغة Kotlin. هذا تغيير غير متوافق مع المصدر للفئات المكتوبة بلغة Kotlin، إذ يجب الآن إلغاء السمتَينdefaultViewModelProviderFactory
وdefaultViewModelCreationExtras
بدلاً من تنفيذ الدوال المقابلة السابقة. (Iaed9c، b/240298691) - تمت إعادة كتابة
Observer
بلغة Kotlin. تستخدم الطريقةonChanged()
الآن الاسمvalue
للمَعلمة. (Iffef2 وI4995e وb/240298691) - تتم كتابة
AndroidViewModel
وAbstractSavedStateViewModelFactory
وLifecycleService
وServiceLifecycleDispatcher
وProcessLifecycleOwner
الآن بلغة Kotlin (I2e771 وIbae40 وI160d7 وI08884 وI1cda7 وb/240298691)
الإصدار 2.6.0-alpha04
11 يناير 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha04
. يحتوي الإصدار 2.6.0-alpha04 على عمليات الإيداع هذه.
الميزات الجديدة
- يتضمّن
LiveData
الآن السمة الجديدةisInitialized
التي تشير إلى ما إذا تمّ ضبط قيمة صريحة علىLiveData
من قبل، ما يتيح لك التمييز بينliveData.value
التي تعرضnull
لأنّه لم يتمّ ضبط أيّ قيمة من قبل أو قيمةnull
صريحة. (Ibd018)
تغييرات واجهة برمجة التطبيقات
- لم تعُد واجهات برمجة التطبيقات
collectAsStateWithLifecycle()
الخاصة بـlifecycle-runtime-compose
في حالة تجريبية. (I09d42، b/258835424) - تم إيقاف طريقتَي
Lifecycle.launchWhenX
وLifecycle.whenX
نهائيًا لأنّ استخدام أداة إرسال مؤقتة يمكن أن يؤدي إلى إهدار الموارد في بعض الحالات. ننصحك باستخدامLifecycle.repeatOnLifecycle
. (Iafc54، b/248302832)
Kotlin Conversions
- تمت إعادة كتابة
ViewTreeLifecycleOwner
بلغة Kotlin. هذا تغيير غير متوافق مع المصدر للفئات المكتوبة بلغة Kotlin، ويجب الآن استيراد طرق إضافة Kotlin واستخدامها مباشرةً فيView
منandroidx.lifecycle.setViewTreeLifecycleOwner
وandroidx.lifecycle.findViewTreeLifecycleOwner
لضبط المالك الذي تم ضبطه سابقًا والعثور عليه. يحل هذا الإصدار محل إضافة Kotlin السابقة فيlifecycle-runtime-ktx
. وهي متوافقة مع الرموز الثنائية وتظل متوافقة مع المصدر بالنسبة إلى عمليات التنفيذ المكتوبة بلغة البرمجة Java. (I8a77a، I5234e، b/240298691) - تمت إعادة كتابة
LiveDataReactiveStreams
بلغة Kotlin. تم نقل إضافات Kotlin التي كانت سابقًا فيlifecycle-reactivestreams-ktx
إلى الوحدةlifecycle-reactivestreams
وأصبحت هي الواجهة الأساسية للرموز المكتوبة بلغة Kotlin. هذا تغيير غير متوافق مع المصدر للرمز المكتوب بلغة Kotlin إذا لم تكن تستخدم واجهات برمجة التطبيقات لطُرق إضافة Kotlin. (I2b1b9 وI95d22 وb/240298691) - تتم كتابة
DefaultLifecycleObserver
وLifecycleEventObserver
وLifecycle
وLifecycleRegistry
وLifecycleObserver
وViewModelStore
الآن بلغة Kotlin (Iadffd، (I60034، I8c52c، I9593d، I01fe1، I59a23، b/240298691)
إصلاح الأخطاء
- لم يعُد
SavedStateHandle
يتعطّل بسببClassCastException
عند الاتصال بـget()
باستخدام نوع فئة غير صحيح. (I6ae7c)
الإصدار 2.6.0-alpha03
24 أكتوبر 2022
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha03
. يحتوي الإصدار 2.6.0-alpha03 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عمل القيود بين وحدات Lifecycle المختلفة على النحو المطلوب. (I18d0d، b/249686765)
- تتضمّن الأخطاء التي يتم عرضها من خلال
LifecycleRegistry.moveToState()
الآن رسائل خطأ أكثر فائدة تُعلم المطوّرين بالمكوّن الذي يتسبّب في حدوث الخطأ. (Idf4b2، b/244910446)
الإصدار 2.6.0-alpha02
7 أيلول (سبتمبر) 2022
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha02
. يحتوي الإصدار 2.6.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- يتضمّن
MediatorLiveData
الآن دالة إنشاء لضبط قيمة أولية. (Ib6cc5، b/151244085)
إصلاح الأخطاء
- تتضمّن حِزم
Lifecycle
الآن قيودًا تضمن استخدام جميع حِزم Lifecycle المترابطة للإصدار نفسه، وتتم ترقية التبعيات الأخرى تلقائيًا عند ترقية إحدى الحِزم. b/242871265 - تُنشئ
FlowLiveData.asFlow()
الآنcallbackFlow
بدلاً من استخدام تنفيذChannel
الخاص بها لضمان أمان سلسلة المحادثات والحفاظ على السياق. (I4a8b2، b/200596935) - ستحتفظ الدالة
FlowLiveData
الخاصة بـasLiveData
الآن بالقيمة الأولية لـStateFlow
عند إنشاء الكائنLiveData
الجديد. (I3f530، b/157380488) - من دورة الحياة
2.5.1
: عمليات التنفيذ المخصّصة لـAndroidViewModelFactory
تستدعي الآن الدالةcreate(modelClass)
بشكلٍ صحيح عند استخدام أداة الإنشاء ذات الحالة معLifecycle
2.4 والإصدارات الأحدث (I5b315، b/238011621)
الإصدار 2.6.0-alpha01
29 يونيو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha01
. يحتوي الإصدار 2.6.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة إضافة جديدة في
StateFlow
وFlow
منcollectAsStateWithLifecycle
تجمع البيانات من التدفقات وتمثّل أحدث قيمة لها كحالة Compose بطريقة تراعي مراحل النشاط. يتم جمع التدفق وضبط القيمة الجديدة للانبعاث على قيمة الحالة عندما تكون مدة النشاط فيLifecycle.State
معيّن على الأقل. عندما تنخفض دورة الحياة إلى ما دونLifecycle.State
، يتوقف جمع البيانات في التدفق ولا يتم تعديل قيمة الحالة. (I1856e، b/230557927)
الإصدار 2.5
الإصدار 2.5.1
27 يوليو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.1
. يحتوي الإصدار 2.5.1 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تستدعي عمليات التنفيذ المخصّصة لـ
AndroidViewModelFactory
الآن الدالةcreate(modelClass)
بشكلٍ صحيح عند استخدام أداة إنشاءAndroidViewModelFactory
ذات الحالة معLifecycle
2.4 أو إصدار أحدث. (I5b315، b/238011621)
الإصدار 2.5.0
29 يونيو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0
. يتضمّن الإصدار 2.5.0 عمليات الإيداع هذه.
التغييرات المهمة منذ الإصدار 2.4.0
توفّر
SavedStateHandle
الآن واجهة برمجة تطبيقاتgetStateFlow()
تعرض قيمةStateFlow
في Kotlin لتتبُّع التغييرات في القيم كبديل لاستخدامLiveData
.ViewModel CreationExtras: عند كتابة
ViewModelProvider.Factory
مخصّص، لم يعُد من الضروري توسيعAndroidViewModelFactory
أوAbstractSavedStateViewModelFactory
للوصول إلىApplication
أوSavedStateHandle
على التوالي. بدلاً من ذلك، يتم توفير هذه الحقول لكل فئة فرعية منViewModelProvider.Factory
كـCreationExtras
من خلال التحميل الزائد الجديد لـcreate
:create(Class<T>, CreationExtras)
. يتم توفير هذه البيانات الإضافية تلقائيًا من خلال "النشاط" أو "الجزء" عند استخدام Activity1.5.0
وFragment1.5.0
على التوالي.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
توفّر
lifecycle-viewmodel
الآنviewModelFactory
Kotlin DSL التي تتيح لك تحديدViewModelProvider.Factory
من حيث أداة تهيئة واحدة أو أكثر من نوع lambda، واحدة لكل فئةViewModel
معيّنة تتوافق مع المصنع المخصّص، وذلك باستخدامCreationExtras
كمصدر البيانات الأساسي.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }
توفّر
lifecycle-viewmodel-compose
الآن واجهة برمجة تطبيقاتviewModel()
تأخذ مصنع lambda لإنشاء مثيلViewModel
بدون الحاجة إلى إنشاءViewModelProvider.Factory
مخصّص.// 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) }
دمج أداة الحفظ في Compose مع SavedStateHandle: يحتوي العنصر
lifecycle-viewmodel-compose
الآن على واجهات برمجة تطبيقات تجريبية جديدة فيSavedStateHandle.saveable
تتيح سلوكًا مشابهًا لسلوكrememberSaveable
الذي يستند إلىSavedStateHandle
في `ViewModel`.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }
تمت إضافة واجهة برمجة التطبيقات
addCloseable()
ورمز تحميل جديد يسمح لك بإضافة عنصر واحد أو أكثر من عناصرCloseable
إلىViewModel
الذي سيتم إغلاقه عند محوViewModel
بدون الحاجة إلى أي عمل يدوي فيonCleared()
.على سبيل المثال، لإنشاء نطاق روتين فرعي يمكنك إدراجه في ViewModel، ولكن يمكنك التحكّم فيه من خلال الاختبار، يمكنك إنشاء
CoroutineScope
ينفّذCloseable
:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }
ويمكن استخدامها بعد ذلك في الدالة الإنشائية
ViewModel
مع الحفاظ على مدة البقاء نفسها كما فيviewModelScope
:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
تغييرات السلوك
- ستؤدي محاولة نقل
Lifecycle.State
منINITIALIZED
إلىDESTROYED
دائمًا إلى عرضIllegalStateException
بغض النظر عما إذا كانLifecycle
يتضمّن مراقبًا مرفقًا. - ستزيل
LifecycleRegistry
الآن المراقبين عندما تصل إلى الحالةDESTROYED
.
الإصدار 2.5.0-rc02
15 يونيو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-rc02
. يحتوي الإصدار 2.5.0-rc02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- لن يتعطّل
ViewModelProvider
بعد الآن عند دمج إصدارات سابقة من تبعيات Lifecycle التي تستخدم compileOnly مع الإصدارات 2.5 والإصدارات الأحدث. (I81a66، b/230454566)
الإصدار 2.5.0-rc01
11 مايو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-rc01
. يحتوي الإصدار 2.5.0-rc01 على عمليات الإرسال هذه.
إصلاح الأخطاء
- تعرض السمة
MediatorLiveData.addSource()
الآن الخطأNullPointerException
عند تمرير مصدرnull
إليها بدلاً من نشر مصدرnull
إلى المراقبين.(Ibd0fb، b/123085232)
الإصدار 2.5.0-beta01
20 أبريل 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-beta01
. يحتوي الإصدار 2.5.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مفوّضات السمة
SavedStateHandle.saveable
لاستخدام أسماء السمات كمفاتيح لتخزين الحالة فيSavedStateHandle
(I8bb86، b/225014345)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى ظهور
IllegalStateException
عند استخدام حِزم احتياطية متعددة، وذلك عند تضمينNavHost
داخلNavHost
أخرى في علامة تبويب غير أساسية في شريط التنقّل السفلي. (I11bd5، b/228865698)
الإصدار 2.5.0-alpha06
6 أبريل 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha06
. يحتوي الإصدار 2.5.0-alpha06 على عمليات الدمج هذه.
الميزات الجديدة
- إضافة تحميل زائد تجريبي
MutableState
إلىSavedStateHandle.saveable
لتحقيق التكافؤ معrememberSaveable
(I38cfe، b/224565154)
تغييرات واجهة برمجة التطبيقات
- أصبحت السمة
CreationExtras
الآن مجرّدة بدلاً من أن تكون محكمة الإغلاق. (Ib8a7a)
إصلاح الأخطاء
- تم إصلاح الخطأ
IllegalStateException: Already attached to lifecycleOwner
الناتج عنSavedStateHandleController
. (I7ea47، b/215406268)
الإصدار 2.5.0-alpha05
23 مارس 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha05
. يحتوي الإصدار 2.5.0-alpha05 على عمليات الإيداع هذه.
الميزات الجديدة
- يوفّر وحدة
lifecycle-viewmodel-compose
الآنSavedStateHandleSaver
، وهي واجهة برمجة تطبيقات تجريبية تضمن دمج القيم فيSavedStateHandle
بشكل صحيح مع حالة المثيل المحفوظة نفسها التي تستخدمهاrememberSaveable
. (Ia88b7، b/195689777)
تغييرات واجهة برمجة التطبيقات
- تم إصلاح مشكلة التوافق مع الإصدار 2.3 والإصدارات الأحدث من Lifecycle في Java. (I52c8a، b/219545060)
إصلاح الأخطاء
- يتيح
SavedStateViewFactory
الآن استخدامCreationExtras
حتى إذا تم إعداده باستخدامSavedStateRegistryOwner
. في حال توفير عناصر إضافية، سيتم تجاهل الوسيطات التي تمّت تهيئتها. (I6c43b، b/224844583)
الإصدار 2.5.0-alpha04
9 مارس 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha04
. يحتوي الإصدار 2.5.0-alpha04 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- توفّر
SavedStateHandle
الآن واجهة برمجة تطبيقاتgetStateFlow()
تعرض KotlinStateFlow
لتتبُّع التغييرات في القيم كبديل لاستخدامLiveData
. (Iad3ab، b/178037961)
الإصدار 2.5.0-alpha03
23 فبراير 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha03
. يحتوي الإصدار 2.5.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة واجهة برمجة التطبيقات
addCloseable()
ورمز تحميل جديد لإنشاء العناصر يتيح لك إضافة عنصر واحد أو أكثر من عناصرCloseable
إلىViewModel
التي سيتم إغلاقها عند محوViewModel
بدون الحاجة إلى أي عمل يدوي فيonCleared()
. (I55ea0) - توفّر
lifecycle-viewmodel
الآنInitializerViewModelFactory
تتيح لك إضافة تعبير lambda لمعالجة فئاتViewModel
معيّنة، باستخدامCreationExtras
كمصدر البيانات الأساسي. (If58fc، b/216687549) - توفّر السمة
lifecycle-viewmodel-compose
الآن واجهة برمجة تطبيقاتviewModel()
تأخذ مصنع lambda لإنشاء مثيلViewModel
بدون الحاجة إلى إنشاءViewModelProvider.Factory
مخصّص. (I97fbb، b/216688927)
تغييرات واجهة برمجة التطبيقات
- يمكنك الآن إنشاء
ViewModel
باستخدامCreationExtras
من خلالlifecycle-viewmodel-compose
. (I08887، b/216688927)
تغييرات السلوك
- ستؤدي محاولة نقل
Lifecycle.State
منINITIALIZED
إلىDESTROYED
دائمًا إلى عرضIllegalStateException
بغض النظر عما إذا كانLifecycle
يتضمّن مراقبًا مرفقًا. (I7c390، b/177924329) - سيزيل
LifecycleRegistry
الآن المراقبين عندما يصل إلى الحالةDESTROYED
. (I4f8dd، b/142925860)
الإصدار 2.5.0-alpha02
9 فبراير 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha02
. يحتوي الإصدار 2.5.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم تحويل
SavedStateHandle
وSavedStateViewModelFactory
إلى Kotlin. وقد أدّى ذلك إلى تحسين إمكانية قبول القيم الخالية في الأنواع العامة في كلتا الفئتين. (Ib6ce2، b/216168263، I9647a، b/177667711) - يمكن أن تتضمّن مَعلمة الدالة
LiveData
switchMap
الآن قيمة فارغة. (I40396، b/132923666) - تمت الآن إضافة التعليق التوضيحي
@CheckResult
إلى إضافاتLiveData
-ktx لفرض استخدام النتيجة عند استدعاء هذه الدوال. (Ia0f05، b/207325134)
تغييرات السلوك
- تعمل السمة
SavedStateHandle
الآن على تخزين القيمة التلقائية بشكل صحيح عندما لا تتوفّر قيمة للمفتاح المحدّد. (I1c6ce، b/178510877)
إصلاح الأخطاء
- من دورة الحياة
2.4.1
: تم تعديلlifecycle-process
ليعتمد على Startup 1.1.1 لضمان توفّر الإصلاحات التي تمنعProcessLifecycleInitializer
من عرضStartupException
تلقائيًا. (Ib01df، b/216490724) - تتوفّر الآن رسالة خطأ محسّنة تظهر عندما تحتوي فئات
AndroidViewModel
المخصّصة على مَعلمات بترتيب غير صحيح ويتم محاولة إنشاءViewModel
. (I340f7، b/177667711) - يمكنك الآن إنشاء نموذج عرض من خلال
CreationExtras
باستخدامAndroidViewModelFactory
بدون ضبط تطبيق. (I6ebef، b/217271656)
الإصدار 2.5.0-alpha01
26 يناير 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha01
. يحتوي الإصدار 2.5.0-alpha01 على عمليات الإيداع هذه.
ViewModel CreationExtras
من خلال هذا الإصدار، نضع الأساس لإعادة هيكلة طريقة إنشاء ViewModel
. بدلاً من مجموعة ثابتة من الفئات الفرعية من ViewModelProvider.Factory
التي تضيف كلّ منها وظائف إضافية (السماح بمَعلمة الدالة الإنشائية Application
من خلال AndroidViewModelFactory
، والسماح بمَعلمة الدالة الإنشائية SavedStateHandle
من خلال SavedStateViewModelFactory
وAbstractSavedStateViewModelFactory
، وما إلى ذلك)، نحن بصدد الانتقال إلى عالم من المصانع عديمة الحالة التي تعتمد على مفهوم جديد، وهو CreationExtras
. (Ia7343 وb/188691010 وb/188541057)
بموجب هذا التغيير، لن تجري ViewModelProvider
مكالمات مباشرة في طريقة create(Class<T>)
السابقة لـ ViewModelProvider.Factory
. بدلاً من ذلك، يتم استدعاء حمل زائد جديد من create
: create(Class<T>, CreationExtras)
. وهذا يعني أنّ أي عملية تنفيذ مباشرة للنموذج ViewModelProvider.Factory
يمكنها الآن الوصول إلى كلّ من CreationExtras
الجديدة هذه:
-
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: يتيحString
الوصول إلى المفتاح المخصّص الذي تم تمريره إلىViewModelProvider.get()
. - يتيح
ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
الوصول إلى الصفApplication
. - يوفر
SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
إمكانية الوصول إلىSavedStateRegistryOwner
المستخدَم لإنشاء هذا ViewModel. - يوفر
SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
إمكانية الوصول إلىViewModelStoreOwner
المستخدَم لإنشاء هذا ViewModel. - توفّر
SavedStateHandleSupport.DEFAULT_ARGS_KEY
إمكانية الوصول إلىBundle
من الوسيطات التي يجب استخدامها لإنشاءSavedStateHandle
.
يتم توفير هذه الميزات الإضافية تلقائيًا عند استخدام نشاط 1.5.0-alpha01
وجزء 1.5.0-alpha01
وتنقّل 2.5.0-alpha01
. إذا كنت تستخدم إصدارًا قديمًا من هذه المكتبات، سيكون CreationExtras
فارغًا، إذ تمت إعادة كتابة جميع الفئات الفرعية الحالية من ViewModelProvider.Factory
لتتوافق مع مسار الإنشاء القديم الذي تستخدمه الإصدارات القديمة من هذه المكتبات ومسار CreationExtras
الذي سيتم استخدامه من الآن فصاعدًا.
تتيح لك هذه CreationExtras
إنشاء ViewModelProvider.Factory
يمرّر المعلومات التي تحتاجها فقط إلى كل ViewModel
بدون الاعتماد على تسلسل هرمي صارم لفئات 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
}
}
نستخدم دالة الإضافة createSavedStateHandle()
في Kotlin على CreationExtras
من SavedStateHandleSupport
لإنشاء SavedStateHandle
فقط لـ ViewModel الذي يحتاج إليها. (Ia6654، b/188541057)
يمكن توفير CreationExtras
المخصّص من خلال إلغاء getDefaultViewModelCreationExtras()
في ComponentActivity
أو Fragment
، ما يتيح استخدامه في ViewModelProvider.Factory
المخصّص كشكل مضمّن من أشكال الإدخال المساعد. ستتوفّر هذه الإضافات تلقائيًا في Factory المخصّصة عند استخدامها مباشرةً مع ViewModelProvider
أو عند استخدام إضافات سمات Kotlin by viewModels()
وby activityViewModels()
. (I79f2b، b/207012584، b/207012585، b/207012490)
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتسبّب في إعادة ظهور القيمة التلقائية المقدَّمة إلى
SavedStateHandle
بعد إيقاف العملية وإعادة إنشائها، حتى إذا تمت إزالتها تحديدًا منSavedStateHandle
. نتيجةً لذلك، لن تدمجSavedStateHandle
القيم التلقائية والقيم التي تمت استعادتها معًا، بل ستستخدم القيم التي تمت استعادتها فقط كمصدر للحقيقة. (I53a4b)
الإصدار 2.4
الإصدار 2.4.1
9 فبراير 2022
تم طرح androidx.lifecycle:lifecycle-*:2.4.1
. يحتوي الإصدار 2.4.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم نقل التغيير من مكوّن Lifecycle
2.5.0-alpha01
: تم إصلاح مشكلة كانت تؤدي إلى إعادة ظهور القيمة التلقائية المقدَّمة إلىSavedStateHandle
بعد إيقاف العملية وإعادة إنشائها، حتى إذا تمت إزالتها تحديدًا منSavedStateHandle
. نتيجةً لذلك، لن تدمجSavedStateHandle
القيم التلقائية والقيم التي تمت استعادتها معًا، بل ستستخدم القيم التي تمت استعادتها فقط كمصدر للحقيقة. (I53a4b) - يعتمد الإصدار
lifecycle-process
الآن على Androidx Startup 1.1.1 الذي أصلح مشكلة في الإصدارات السابقة حيث كان استخدامProcessLifecycleInitializer
يؤدي إلى حدوثStartupException
. (b/216490724)
الإصدار 2.4.0
27 أكتوبر 2021
تم طرح androidx.lifecycle:lifecycle-*:2.4.0
. يتضمّن الإصدار 2.4.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.3.0
- تم إيقاف
@OnLifecycleEvent
نهائيًا. يجب استخدامLifecycleEventObserver
أوDefaultLifecycleObserver
بدلاً من ذلك. - تمت إضافة مكتبة
androidx.lifecycle:lifecycle-viewmodel-compose
. توفّرviewModel()
قابلة للإنشاء وLocalViewModelStoreOwner
.- تغيير غير متوافق مع الإصدارات السابقة: تمت إعادة كتابة
ViewModelProvider
بلغة Kotlin. لم يعُد الإجراءViewModelProvider.Factory.create
يسمح بقيمة عامة تقبل القيم الخالية.
- تغيير غير متوافق مع الإصدارات السابقة: تمت إعادة كتابة
- تمت إضافة واجهة برمجة تطبيقات جديدة للروتينات الفرعية إلى
androidx.lifecycle:lifecycle-runtime-ktx
: -
Lifecycle.repeatOnLifecycle
، وهي واجهة برمجة تطبيقات تنفّذ مجموعة من الرموز البرمجية في روتين فرعي عندما تكون "دورة الحياة" في حالة معيّنة على الأقل. سيتم إلغاء الحظر وإعادة إطلاقه مع انتقال دورة الحياة إلى الحالة المستهدَفة وخروجها منها. Flow.flowWithLifecycle
، وهي واجهة برمجة تطبيقات تعرض قيمًا من Flow المصدر عندما تكون حالة عمر التطبيق في حالة معيّنة على الأقل.- تم نقل
DefaultLifecycleObserver
منlifecycle.lifecycle-common-java8
إلىlifecycle.lifecycle-common
. لم يعُدlifecycle.lifecycle-common-java8
يوفّر أي وظائف إضافية إلى جانبlifecycle.lifecycle-common
، لذا يمكن استبدال الاعتماد عليه بـlifecycle.lifecycle-common
. - تم نقل واجهة برمجة التطبيقات غير المتزامنة من
lifecycle-viewmodel-ktx
إلى الوحدةlifecycle-viewmodel
. يستخدم
lifecycle-process
الآنandroidx.startup
لإعدادProcessLifecycleOwner
.في السابق، كان يتم ذلك من خلال
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.إذا كنت قد استخدمت
tools:node="remove"
فيContentProvider
المستخدَمة لتهيئة دورة حياة العملية في السابق، عليك اتّباع الخطوات التالية بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(أو)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
الإصدار 2.4.0-rc01
29 سبتمبر 2021
تم إصدار androidx.lifecycle:lifecycle-*:2.4.0-rc01
بدون أي تغييرات عن الإصدار Lifecycle 2.4.0-beta01. يحتوي الإصدار 2.4.0-rc01 على عمليات الإيداع هذه.
الإصدار 2.4.0-beta01
15 سبتمبر 2021
تم طرح androidx.lifecycle:lifecycle-*:2.4.0-beta01
. يحتوي الإصدار 2.4.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
@OnLifecycleEvent
نهائيًا. يجب استخدامLifecycleEventObserver
أوDefaultLifecycleObserver
بدلاً من ذلك. (I5a8fa) - تم نقل DefaultLifecycleObserver من
androidx.lifecycle.lifecycle-common-java8
إلىandroidx.lifecycle.lifecycle-common
. لم يعُدandroidx.lifecycle.lifecycle-common-java8
يوفّر أي وظائف إضافية إلى جانبandroidx.lifecycle.lifecycle-common
، لذا يمكن استبدال الاعتماد عليه بـandroidx.lifecycle.lifecycle-common
. (I021aa) - تم نقل واجهة برمجة التطبيقات غير المتزامنة من
lifecycle-viewmodel-ktx
إلى الوحدةlifecycle-viewmodel
. (I6d5b2)
المساهمة الخارجية
الإصدار 2.4.0-alpha03
4 أغسطس 2021
تم طرح androidx.lifecycle:lifecycle-*:2.4.0-alpha03
. يحتوي الإصدار 2.4.0-alpha03 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تغيير غير متوافق مع المصدر: تمت إعادة كتابة ViewModelProvider بلغة Kotlin.
لم يعُد الإجراء
ViewModelProvider.Factory.create
يسمح بقيمة عامة تقبل القيم الفارغة. (I9b9f6)
التغييرات في السلوك
- يتم الآن استدعاء
Lifecycle.repeatOnLifecycle
:block
دائمًا بشكل تسلسلي عند تكرار التنفيذ. (Ibab33)
المساهمة الخارجية
- نشكر chao2zhang على إصلاح مقتطفات الرمز في مستندات
repeatOnLifecycle
. #205
الإصدار 2.4.0-alpha02
16 حزيران (يونيو) 2021
تم طرح androidx.lifecycle:lifecycle-*:2.4.0-alpha02
. يحتوي الإصدار 2.4.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة عملية فحص
RepeatOnLifecycleWrongUsage
جديدة إلىlifecycle-runtime-ktx
لرصد الحالات التي يتم فيها استخدامrepeateOnLifecycle
بشكل غير صحيح فيonStart()
أوonResume()
. (706078، b/187887400)
تغييرات واجهة برمجة التطبيقات
- تمت إزالة واجهة برمجة التطبيقات
LifecycleOwner.addRepeatingJob
واستبدالها بواجهةLifecycle.repeatOnLifecycle
التي تتوافق مع التزامن المنظَّم ويسهل فهمها. (I4a3a8) - اجعل
ProcessLifecycleInitializer
متاحًا للجميع حتى تتمكّنandroidx.startup.Initializer
الأخرى من استخدامه كعنصر تابع. (I94c31)
إصلاح الأخطاء
- تم إصلاح مشكلة في عملية فحص
NullSafeMutableLiveData
عند احتواء الحقل على معدِّلات. (#147، b/183696616) - تم إصلاح مشكلة أخرى في عملية فحص
NullSafeMutableLiveData
lint عند استخدام الأنواع العامة. (#161، b/184830263)
المساهمة الخارجية
- نشكر المستخدم maxsav على المساهمة في تحسين عملية فحص
NullSafeMutableLiveData
. (#147، b/183696616) - نشكر kozaxinan على المساهمة في تحسين عملية فحص
NullSafeMutableLiveData
. (#161، b/184830263)
الإصدار 2.4.0-alpha01
24 مارس 2021
تم طرح androidx.lifecycle:lifecycle-*:2.4.0-alpha01
. يحتوي الإصدار 2.4.0-alpha01 على عمليات الإيداع هذه.
التغييرات في السلوك
يستخدم
lifecycle-process
الآنandroidx.startup
لإعدادProcessLifecycleOwner
.في السابق، كان يتم ذلك من خلال
androidx.lifecycle.ProcessLifecycleOwnerInitializer
.إذا كنت قد استخدمت
tools:node="remove"
فيContentProvider
المستخدَمة لتهيئة دورة حياة العملية في السابق، عليك اتّباع الخطوات التالية بدلاً من ذلك.<provider android:name="androidx.startup.InitializationProvider" android:authorities=\"${applicationId}.androidx-startup" android:exported="false" tools:node=\"merge"> <!-- If you are using androidx.startup to initialize other components --> <meta-data android:name="androidx.lifecycle.ProcessLifecycleInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
(أو)
<!-- If you want to disable androidx.startup completely. --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove"> </provider>
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهة برمجة التطبيقات
Flow.flowWithLifecycle
التي تعرض قيمًا من Flow المصدر عندما تكون دورة الحياة في حالة معيّنة على الأقل باستخدام واجهة برمجة التطبيقاتLifecycle.repeatOnLifecycle
. هذه الواجهة هي بديل لواجهةLifecycleOwner.addRepeatinJob
API الجديدة أيضًا. (I0f4cd)
إصلاح الأخطاء
- بدءًا من الإصدار 2.3.1 من Lifecycle، يمكن لقاعدة التدقيق
NonNullableMutableLiveData
الآن التمييز بشكل صحيح بين متغيرات الحقول التي تختلف في إمكانية قبولها قيمًا فارغة. (b/169249668)
Lifecycle Viewmodel Compose الإصدار 1.0.0
الإصدار 1.0.0-alpha07
16 حزيران (يونيو) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على عمليات الإيداع هذه.
التغييرات غير المتوافقة في واجهة برمجة التطبيقات
- تتضمّن السمة
viewModel()
الآن السمة الاختياريةViewModelStoreOwner
، ما يسهّل العمل مع مالكين آخرين غيرLocalViewModelStoreOwner
. على سبيل المثال، يمكنك الآن استخدامviewModel(navBackStackEntry)
لاسترداد ViewModel مرتبط برسم بياني معيّن للتنقّل. (I2628d، b/188693123)
الإصدار 1.0.0-alpha06
2 حزيران (يونيو) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على عمليات الإيداع هذه.
تم تعديلها لتتوافق مع الإصدار 1.0.0-beta08
من Compose.
الإصدار 1.0.0-alpha05
18 أيار (مايو) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على عمليات الإيداع هذه.
الميزات الجديدة
- تم تعديلها لتتوافق مع الإصدار
1.0.0-beta07
من Compose.
إصلاح الأخطاء
- أصبحت ملفات AndroidManifest من ui-test-manifest وui-tooling-data متوافقة الآن مع Android 12 (I6f9de، b/184718994)
الإصدار 1.0.0-alpha04
7 نيسان (أبريل) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04
. يحتوي الإصدار 1.0.0-alpha04 على عمليات الإيداع هذه.
التغييرات في التبعيات
- يسمح هذا الإصدار من
androidx.hilt:hilt-navigation-compose
وandroidx.navigation:navigation-compose
بمزامنة التبعيات علىandroidx.compose.compiler:compiler:1.0.0-beta04
وandroidx.compose.runtime:runtime:1.0.0-beta04
. بالنسبة إلى الإصدار 1.0.0، يجب أن يتطابق المترجم ووقت التشغيل.
الإصدار 1.0.0-alpha03
10 مارس 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03
. يحتوي الإصدار 1.0.0-alpha03 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تعرض الدالة
LocalViewModelStoreOwner.current
الآن قيمةViewModelStoreOwner
قابلة للتصغير لتحديد ما إذا كانViewModelStoreOwner
متاحًا في التركيبة الحالية بشكل أفضل. ستستمر واجهات برمجة التطبيقات التي تتطلّبViewModelStoreOwner
، مثلviewModel()
وNavHost
، في عرض استثناء إذا لم يتم ضبطViewModelStoreOwner
. (Idf39a)
Lifecycle-Viewmodel-Compose الإصدار 1.0.0-alpha02
24 شباط (فبراير) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02
. يحتوي الإصدار 1.0.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تتضمّن
LocalViewModelStoreOwner
الآن وظائفprovides
يمكن استخدامها معCompositionLocalProvider
، ما يحلّ محل واجهة برمجة التطبيقاتasProvidableCompositionLocal()
. (I45d24)
Lifecycle-Viewmodel-Compose الإصدار 1.0.0-alpha01
10 شباط (فبراير) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
. يحتوي الإصدار 1.0.0-alpha01 على عمليات الدمج التالية.
الميزات الجديدة
- تم نقل العنصر القابل للإنشاء
viewModel()
وLocalViewModelStoreOwner
منandroidx.compose.ui.viewinterop
إلى هذا العنصر في حزمةandroidx.lifecycle.viewmodel.compose
. (I7a374)
الإصدار 2.3.1
الإصدار 2.3.1 من Lifecycle
24 مارس 2021
تم طرح androidx.lifecycle:lifecycle-*:2.3.1
. يحتوي الإصدار 2.3.1 على عمليات الإيداع هذه.
إصلاح الأخطاء
- يمكن الآن لقاعدة
NonNullableMutableLiveData
lint التمييز بشكل صحيح بين متغيرات الحقول التي تختلف في إمكانية قبولها قيمًا فارغة. (b/169249668)
الإصدار 2.3.0
الإصدار 2.3.0
10 شباط (فبراير) 2021
تم طرح androidx.lifecycle:lifecycle-*:2.3.0
. يتضمّن الإصدار 2.3.0 عمليات الدمج هذه.
التغييرات الرئيسية منذ الإصدار 2.2.0
- إتاحة
SavedStateHandle
للفئات غير القابلة للتسلسل: تتيحSavedStateHandle
الآن التسلسل الكسول من خلال السماح لك باستدعاءsetSavedStateProvider()
لمفتاح معيّن، وتوفيرSavedStateProvider
الذي سيتلقّى ردّ اتصال إلىsaveState()
عند طلبSavedStateHandle
حفظ حالته. راجِع مقالة حفظ الفئات غير القابلة للتسلسل. - فرض السلوك المرتبط بدورة الحياة:
- يفرض LifecycleRegistry الآن استخدام
DESTROYED
كحالة نهائية. - تتحقّق
LifecycleRegistry
الآن من أنّه يتم استدعاء طرقها في سلسلة التعليمات الرئيسية. كان ذلك دائمًا شرطًا لدورات حياة الأنشطة واللقطات وما إلى ذلك. وقد أدّى إضافة المراقبين من سلاسل محادثات غير رئيسية إلى حدوث أعطال يصعب رصدها أثناء وقت التشغيل. بالنسبة إلى عناصرLifecycleRegistry
التي تملكها مكوّناتك الخاصة، يمكنك إيقاف عمليات التحقّق بشكل صريح باستخدامLifecycleRegistry.createUnsafe(...)
، ولكن عليك بعد ذلك التأكّد من توفّر مزامنة مناسبة عند الوصول إلىLifecycleRegistry
من سلاسل محادثات مختلفة.
- يفرض LifecycleRegistry الآن استخدام
- أدوات مساعدة في حالة دورة الحياة والأحداث: تمت إضافة طرق مساعدة ثابتة لكل من
downFrom(State)
وdownTo(State)
وupFrom(State)
وupTo(State)
إلىLifecycle.Event
لإنشاءEvent
بالنظر إلىState
واتجاه الانتقال. تمت إضافة الطريقةgetTargetState()
التي توفّرState
التي سينتقل إليها Lifecycle مباشرةً بعدEvent
. withStateAtLeast
: تمت إضافة واجهات برمجة التطبيقاتLifecycle.withStateAtLeast
التي تنتظر حالة دورة الحياة وتنفّذ مجموعة رموز غير معلَّقة بشكل متزامن عند نقطة تغيير الحالة، ثم تستأنف مع النتيجة. تختلف واجهات برمجة التطبيقات هذه عن طرقwhen*
الحالية لأنّها لا تسمح بتشغيل الرمز المعلق ولا تستخدم أداة إرسال مخصّصة. (aosp/1326081)- واجهات برمجة التطبيقات
ViewTree
: تتيح لك واجهتا برمجة التطبيقات الجديدتانViewTreeLifecycleOwner.get(View)
وViewTreeViewModelStoreOwner.get(View)
استردادLifecycleOwner
وViewModelStoreOwner
على التوالي، وذلك عند توفّر مثيلView
. يجب الترقية إلى Activity1.2.0
وFragment1.3.0
وAppCompat 1.3.0-alpha01 أو إصدار أحدث لملء هذا الحقل بشكل صحيح. تتوفّر إضافتا KotlinfindViewTreeLifecycleOwner
وfindViewTreeViewModelStoreOwner
فيlifecycle-runtime-ktx
وlifecycle-viewmodel-ktx
على التوالي. LiveData.observe()
إيقاف دالة الإضافة في Kotlin نهائيًا: تم الآن إيقاف دالة الإضافةLiveData.observe()
في Kotlin نهائيًا، وهي ضرورية لاستخدام صيغة lambda، لأنّها لم تعُد ضرورية عند استخدام الإصدار 1.4 من Kotlin.
الإصدار 2.3.0-rc01
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-rc01
. يحتوي الإصدار 2.3.0-rc01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- أصبحت طريقة
keys()
فيSavedStateHandle
متسقة الآن قبل حفظ الحالة وبعده، فهي تتضمّن الآن المفاتيح التي تم استخدامها سابقًا معsetSavedStateProvider()
بالإضافة إلى المفاتيح المستخدَمة معset()
وgetLiveData()
. (aosp/1517919 وb/174713653)
المساهمة الخارجية
- تعمل واجهات برمجة التطبيقات لتعليق الروتينات الفرعية المتوافقة مع دورة الحياة الآن على التعامل بشكل أفضل مع طلبات البيانات إلى
yield()
. شكرًا "نيكلاس أنسمان غيرتز". (aosp/1430830، b/168777346)
الإصدار 2.3.0-beta01
1 تشرين الأول (أكتوبر) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-beta01
. يحتوي الإصدار 2.3.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
LiveData.observe()
إضافة Kotlin اللازمة لاستخدام بنية lambda نهائيًا، لأنّها لم تعُد ضرورية عند استخدام Kotlin 1.4. (I40d3f)
إصلاح الأخطاء
- ترقية androidx لاستخدام Kotlin 1.4 (Id6471 وb/165307851 وb/165300826)
التغييرات في المستندات
- تم تعديل أداة إنشاء
liveData
ومستنداتasLiveData()
لتضمين تفاصيل حول تغيير قيم المهلة المحدّدة. (aosp/1122324)
الإصدار 2.3.0-alpha07
19 آب (أغسطس) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha07
. يحتوي الإصدار 2.3.0-alpha07 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل في
NullSafeMutableLiveData
Lint check. (aosp/1395367)
الإصدار 2.3.0-alpha06
22 تموز (يوليو) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha06
. يحتوي الإصدار 2.3.0-alpha06 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة طرق مساعدة ثابتة للسمات
downFrom(State)
وdownTo(State)
وupFrom(State)
وupTo(State)
إلىLifecycle.Event
لإنشاءEvent
مع توفيرState
واتجاه الانتقال. تمت إضافة الطريقةgetTargetState()
التي توفّرState
التي سينتقل إليها Lifecycle مباشرةً بعدEvent
. (I00887) - تمت إضافة واجهات برمجة التطبيقات
Lifecycle.withStateAtLeast
التي تنتظر حالة دورة الحياة وتنفّذ مجموعة من الرموز غير المعلقة بشكل متزامن عند نقطة تغيير الحالة، ثم تستأنف مع النتيجة. تختلف واجهات برمجة التطبيقات هذه عن طرقwhen*
الحالية لأنّها لا تسمح بتشغيل الرمز المعلق ولا تستخدم أداة إرسال مخصّصة. (aosp/1326081)
التغييرات في السلوك
- يفرض LifecycleRegistry الآن استخدام
DESTROYED
كحالة نهائية. (I00887) - تتحقّق
LifecycleRegistry
الآن من أنّه يتم استدعاء طرقها في سلسلة التعليمات الرئيسية. كان ذلك دائمًا شرطًا لدورات حياة الأنشطة واللقطات وما إلى ذلك. وقد أدّى إضافة المراقبين من سلاسل محادثات غير رئيسية إلى حدوث أعطال يصعب رصدها أثناء وقت التشغيل. بالنسبة إلى عناصرLifecycleRegistry
التي تملكها مكوّناتك، يمكنك إيقاف عمليات التحقّق بشكل صريح باستخدامLifecycleRegistry.createUnsafe(...)
، ولكن عليك بعد ذلك التأكّد من توفّر مزامنة مناسبة عند الوصول إلى عنصرLifecycleRegistry
هذا من سلاسل محادثات مختلفة (Ie7280 وb/137392809).
إصلاح الأخطاء
- تم إصلاح عطل في
NullSafeMutableLiveData
. (b/159987480) - تم إصلاح
ObsoleteLintCustomCheck
لعمليات فحص Lint المجمّعة معlifecycle-livedata-core-ktx
(وNullSafeMutableLiveData
تحديدًا). (b/158699265)
الإصدار 2.3.0-alpha05
24 يونيو 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha05
. يحتوي الإصدار 2.3.0-alpha05 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تعمل السمة
LiveData
الآن على التعامل مع حالات إعادة الدخول بشكل أفضل، ما يمنع تكرار طلباتonActive()
أوonInactive()
. (b/157840298) - تم إصلاح مشكلة عدم تنفيذ عمليات التحقّق المستندة إلى أداة Lint عند استخدام الإصدار 6 أو إصدار أحدث من الإصدار التجريبي 4.1 من "استوديو Android". (aosp/1331903)
الإصدار 2.3.0-alpha04
10 يونيو 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha04
. يحتوي الإصدار 2.3.0-alpha04 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح عُطل في عملية فحص
NonNullableMutableLiveData
Lint. (b/157294666) - يشمل
NonNullableMutableLiveData
فحص Lint الآن عددًا أكبر بكثير من الحالات التي تم فيها ضبط قيمةnull
علىMutableLiveData
باستخدام مَعلمة نوع غير فارغة. (b/156002218)
الإصدار 2.3.0-alpha03
20 أيار (مايو) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha03
. يحتوي الإصدار 2.3.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- تتيح السمة
SavedStateHandle
الآن التسلسل الكسول من خلال السماح لك باستدعاءsetSavedStateProvider()
لمفتاح معيّن، وتوفيرSavedStateProvider
سيحصل على ردّ الاتصال إلىsaveState()
عندما يُطلب منSavedStateHandle
حفظ حالته. (b/155106862) - تتيح لك واجهة برمجة التطبيقات الجديدة
ViewTreeViewModelStoreOwner.get(View)
استردادViewModelStoreOwner
الذي يحتوي على مثيلView
. يجب الترقية إلى Activity1.2.0-alpha05
وFragment1.3.0-alpha05
وAppCompat1.3.0-alpha01
لملء هذا الحقل بشكل صحيح. تمت إضافة إضافةfindViewModelStoreOwner()
Kotlin إلىlifecycle-viewmodel-ktx
. (aosp/1295522)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تمنع نشر عمليات فحص
MutableLiveData
Lint التي تم إصدارها في Lifecycle2.3.0-alpha01
مع العنصرlifecycle-livedata-core-ktx
. (b/155323109)
الإصدار 2.3.0-alpha02
29 نيسان (أبريل) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha02
. يحتوي الإصدار 2.3.0-alpha02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تتيح لك السمة
SavedStateViewModelFactory
الآن تمرير قيمة فارغةApplication
إلى الدالة الإنشائية من أجل توفير دعم أفضل للحالات التي لا تتوفّر فيها قيمة بسهولة ولا حاجة إلى دعمAndroidViewModel
. (aosp/1285740)
إصلاح الأخطاء
- تحسين أداء التشغيل على البارد من خلال تجنُّب تعذُّر التحقّق من الفئة على الأجهزة التي تعمل بالإصدار 28 من واجهة برمجة التطبيقات والإصدارات الأقدم (aosp/1282118)
الإصدار 2.3.0-alpha01
4 مارس 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha01
. يحتوي الإصدار 2.3.0-alpha01 على عمليات الإيداع هذه.
الميزات الجديدة
- تتيح لك واجهة برمجة التطبيقات الجديدة
ViewTreeLifecycleOwner.get(View)
استردادLifecycleOwner
الذي يحتوي على مثيلView
. يجب الترقية إلى Activity1.2.0-alpha01
وFragment1.3.0-alpha01
لملء هذا الحقل بشكل صحيح. تتوفّر إضافةfindViewTreeLifecycleOwner
Kotlin فيlifecycle-runtime-ktx
. (aosp/1182361 وaosp/1182956) - تمت إضافة عملية فحص جديدة باستخدام أداة Lint تنبّهك عند ضبط قيمة
null
علىMutableLiveData
تم تعريفها في Kotlin على أنّها غير قابلة للقيم الخالية. تتوفّر هذه السمة عند استخدام العنصرينlivedata-core-ktx
أوlivedata-ktx
. (aosp/1154723 وaosp/1159092) - يتوفّر عنصر
lifecycle-runtime-testing
جديد يوفّرTestLifecycleOwner
ينفّذLifecycleOwner
ويوفّرLifecycle
قابلاً للتغيير وآمنًا للاستخدام في سلاسل التعليمات المتعددة. (aosp/1242438)
إصلاح الأخطاء
- يحتوي العنصر
lifecycle-runtime
الآن على اسم حزمة فريد. (aosp/1187196)
الإصدار 2.2.0
ViewModel-Savedstate الإصدار 2.2.0
5 شباط (فبراير) 2020
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
. يتضمّن الإصدار 2.2.0 عمليات الدمج هذه.
تتشارك السمة Lifecycle ViewModel SavedState الآن الإصدار نفسه مع عناصر Lifecycle الأخرى. يكون سلوك 2.2.0
مطابقًا لسلوك 1.0.0
.
الإصدار 2.2.0
22 يناير 2020
تم طرح androidx.lifecycle:lifecycle-*:2.2.0
. يتضمّن الإصدار 2.2.0 عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 2.1.0
- دمج إجراءات روتينية متزامنة مع دورة الحياة: يضيف العنصر الجديد
lifecycle-runtime-ktx
إمكانية الدمج بين دورة الحياة والإجراءات الروتينية المتزامنة في Kotlin. تمت أيضًا توسيع نطاقlifecycle-livedata-ktx
للاستفادة من الروتينات الفرعية. لمزيد من التفاصيل، يمكنك الاطّلاع على استخدام إجراءات Kotlin الفرعية مع "مكوّنات البنية". - إيقاف
ViewModelProviders.of()
نهائيًا: تم إيقافViewModelProviders.of()
نهائيًا. يمكنك تمريرFragment
أوFragmentActivity
إلى الدالة الإنشائية الجديدةViewModelProvider(ViewModelStoreOwner)
لتحقيق الوظيفة نفسها عند استخدام Fragment1.2.0
. lifecycle-extensions
إيقاف العنصر نهائيًا: بعد إيقافViewModelProviders.of()
نهائيًا على النحو المذكور أعلاه، يشير هذا الإصدار إلى إيقاف آخر واجهة برمجة تطبيقات فيlifecycle-extensions
نهائيًا، ويجب الآن اعتبار هذا العنصر متوقفًا نهائيًا بالكامل. ننصحك بشدة بالاعتماد على عناصر Lifecycle الخاصة التي تحتاج إليها (مثلlifecycle-service
إذا كنت تستخدمLifecycleService
وlifecycle-process
إذا كنت تستخدمProcessLifecycleOwner
) بدلاً منlifecycle-extensions
، لأنّه لن يتم إصدار2.3.0
في المستقبل منlifecycle-extensions
.- معالج التعليقات التوضيحية التدريجي في Gradle: يكون معالج التعليقات التوضيحية في Lifecycle تدريجيًا بشكل تلقائي.
إذا كان تطبيقك مكتوبًا بلغة البرمجة Java 8، يمكنك استخدام
DefautLifecycleObserver
بدلاً من ذلك، وإذا كان مكتوبًا بلغة البرمجة Java 7، يمكنك استخدامLifecycleEventObserver
.
الإصدار 2.2.0-rc03
4 كانون الأول (ديسمبر) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-rc03
. يحتوي الإصدار 2.2.0-rc03 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح خطأ يحدث عند تخزين
ViewModel
وهمي فيViewModelStore
والاستعلام عنه لاحقًا باستخدام الإعدادات الأصلية التلقائية. - إصلاح استخدام
Dispatchers.Main.immediate
فيlaunchWhenCreated
والطُرق المشابهة ليتم استدعاؤها بشكل متزامن أثناء حدث مراحل النشاط المقابل (aosp/1156203)
المساهمات الخارجية
- نشكر "أندرس يارلبرغ" على المساهمة في إصلاح هذه المشكلة. (aosp/1156203)
- نشكر "فسيفولود تولستوبياتوف" من Jetbrains على مراجعة عملية تنفيذ التنفيذ المضمّن.
التغييرات في التبعيات
- تعتمد Lifecycle Extensions الآن على Fragment
1.2.0-rc03
.
الإصدار 2.2.0-rc02
7 نوفمبر 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-rc02
. يحتوي الإصدار 2.2.0-rc02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح خطأ في إعدادات Proguard للمكتبة كان يؤثر في الأجهزة التي تعمل بالإصدار 28 من واجهة برمجة التطبيقات أو الإصدارات الأحدث إذا كان الإصدار المستهدف من واجهة برمجة التطبيقات أقل من 29. (b/142778206)
الإصدار 2.2.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-rc01
. يحتوي الإصدار 2.2.0-rc01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى تنفيذ
launchWhenCreated
والطُرق ذات الصلة بعد إطار واحد من طريقة مراحل النشاط المرتبطة بسبب استخدامهاDispatchers.Main
بدلاً منDispatchers.Main.immediate
. (aosp/1145596)
المساهمات الخارجية
- نشكر "نيكلاس أنسمان" على المساهمة في إصلاح هذه المشكلة. (aosp/1145596)
الإصدار 2.2.0-beta01
9 أكتوبر 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-beta01
. يحتوي الإصدار 2.2.0-beta01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تراجع تم تقديمها في Lifecycle 2.2.0-alpha05 في ترتيب
ProcessLifecycleOwner
وانتقالLifecycleOwner
النشاط إلى الحالة "بدء" و"استئناف" على أجهزة Android 10. (aosp/1128132) - تم إصلاح مشكلة تراجع تم تقديمها في Lifecycle
2.2.0-alpha05
كانت تؤدي إلى حدوثNullPointerException
عند استخدام الإصدار2.0.0
أو2.1.0
منlifecycle-process
. (b/141536990)
الإصدار 2.2.0-alpha05
18 أيلول (سبتمبر) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha05
. يحتوي الإصدار 2.2.0-alpha05 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تزامن في أداة إنشاء LiveData الروتينية الفرعية. b/140249349
الإصدار 2.2.0-alpha04
5 أيلول (سبتمبر) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha04
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- تستخدم الآن
lifecycleScope
وwhenCreated
وwhenStarted
وwhenResumed
وviewModelScope
والتنفيذ الأساسي لـliveData
Dispatchers.Main.immediate
بدلاً منDispatchers.Main
. (b/139740492)
المساهمات الخارجية
- نشكر "نيكلاس أنسمان" على المساهمة في نقل البيانات إلى
Dispatchers.Main.immediate
. (aosp/1106073)
الإصدار 2.2.0-alpha03
7 آب (أغسطس) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha03
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- يمكن الآن أن تتضمّن عمليات تنفيذ
ViewModelStoreOwner
بشكل اختياريHasDefaultViewModelProviderFactory
لتوفيرViewModelProvider.Factory
تلقائي. تم إجراء ذلك لكل من النشاط1.1.0-alpha02
والجزء1.2.0-alpha02
والتنقّل2.2.0-alpha01
. (aosp/1092370، b/135716331)
تغييرات واجهة برمجة التطبيقات
- تم إيقاف
ViewModelProviders.of()
نهائيًا. يمكنك تمريرFragment
أوFragmentActivity
إلى الدالة الإنشائية الجديدةViewModelProvider(ViewModelStoreOwner)
لتحقيق الوظيفة نفسها. (aosp/1009889)
الإصدار 2.2.0-alpha02
2 تموز (يوليو) 2019
تم طرح androidx.lifecycle:*:2.2.0-alpha02
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تم استبدال
LiveDataScope.initialValue
بـLiveDataScope.latestValue
التي ستتتبّع القيمة الحالية التي تم إصدارها من الحظرliveData
. - تمت إضافة تحميل زائد جديد إلى أداة إنشاء
liveData
يتلقّى المَعلمةtimeout
كنوعDuration
الإصدار 2.2.0-alpha01
7 أيار (مايو) 2019
تم طرح androidx.lifecycle:*:2.2.0-alpha01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- يضيف هذا الإصدار ميزات جديدة تتيح استخدام إجراءات Kotlin الفرعية في Lifecycle وLiveData. يمكنك الاطّلاع على مستندات تفصيلية حولها هنا.
الإصدار 1.0.0 من ViewModel-SavedState
الإصدار 1.0.0
22 يناير 2020
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
. يتضمّن الإصدار 1.0.0 عمليات الدمج التالية.
الميزات المهمة في الإصدار 1.0.0
- تمت إضافة فئة SavedStateHandle جديدة. ويتيح ذلك لصفوف
ViewModel
الوصول إلى الحالة المحفوظة والمساهمة فيها. يمكن تلقّي هذا العنصر في الدالة الإنشائية للفئةViewModel
، وستعمل الدوال الإنشائية التلقائية التي توفّرها الفئتان Fragments وAppCompatActivity على إدخالSavedStateHandle
تلقائيًا. - تمت إضافة AbstractSavedStateViewModelFactory. يتيح لك إنشاء مصانع مخصّصة لـ
ViewModel
ومنحها إذن الوصول إلىSavedStateHandle
.
ViewModel-Savedstate الإصدار 1.0.0-rc03
4 كانون الأول (ديسمبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
. يحتوي الإصدار 1.0.0-rc03 على عمليات الإيداع هذه.
التغييرات في التبعيات
- تعتمد الآن السمة Lifecycle ViewModel SavedState على السمة Lifecycle
2.2.0-rc03
.
Viewmodel-Savedstate الإصدار 1.0.0-rc02
7 نوفمبر 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
. يحتوي الإصدار 1.0.0-rc02 على عمليات الإيداع هذه.
التغييرات في التبعيات
- يعتمد الآن على دورة الحياة
2.2.0-rc02
.
ViewModel-SavedState الإصدار 1.0.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
بدون أي تغييرات عن 1.0.0-beta01
. يتضمّن الإصدار 1.0.0-rc01 عمليات الإيداع هذه.
ViewModel-Savedstate Version 1.0.0-beta01
9 أكتوبر 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى ظهور
IllegalStateException
عند الوصول إلى SavedState ViewModel لأول مرة فيActivity.onActivityResult()
. (b/139093676) - تم إصلاح
IllegalStateException
عند استخدامAbstractSavedStateViewModelFactory
. (b/141225984)
ViewModel-SavedState الإصدار 1.0.0-alpha05
18 أيلول (سبتمبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
. يتضمّن الإصدار 1.0.0-alpha05 عمليات الدمج التالية.
تغييرات واجهة برمجة التطبيقات
- لم يعُد
SavedStateViewModelFactory
يوسّعAbstractSavedStateViewModelFactory
، ولا يتم إنشاءSavedStateHandle
إلا لـ ViewModels التي طلبت الحصول عليه (aosp/1113593)
ViewModel-SavedState الإصدار 1.0.0-alpha03
7 آب (أغسطس) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
التغييرات التي قد تؤدي إلى أعطال
- لم يعُد
lifecycle-viewmodel-savedstate
يعتمد علىfragment
، وتمت إزالة الدالتَين الإنشائيتَينSavedStateViewModelFactory(Fragment)
وSavedStateViewModelFactory(FragmentActivity)
المرتبطتَين به. بدلاً من ذلك، أصبحتSavedStateViewModelFactory
هي المصنع التلقائي الآن لكل من Activity1.1.0-alpha02
وFragment1.2.0-alpha02
وNavigation2.2.0-alpha01
. (b/135716331)
ViewModel-SavedState الإصدار 1.0.0-alpha02
2 تموز (يوليو) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- تمت إضافة عملية تحميل زائدة
SavedStateHandle.getLiveData()
تقبل قيمة تلقائية.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
SavedStateVMFactory
إلىSavedStateViewModelFactory
. - تمت إعادة تسمية
AbstractSavedStateVMFactory
إلىAbstractSavedStateViewModelFactory
.
ViewModel-Savedstate Version 1.0.0-alpha01
13 مارس 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
. يمكن الاطّلاع على سجلّ التعديلات الكامل لهذا الإصدار الأوّلي هنا.
الميزات الجديدة
- يمكن الآن لـ
ViewModels
المساهمة في savedstate. لإجراء ذلك، عليك استخدام مصنعSavedStateVMFactory
الخاص بـ ViewModel الذي تم تقديمه حديثًا، ويجب أن يحتوي ViewModel على دالة إنشاء تتلقّى الكائنSavedStateHandle
كمعلَمة.
الإصدار 2.1.0
التغييرات المهمة منذ الإصدار 2.0.0
- تمت إضافة
LifecycleEventObserver
للحالات التي يكون فيها بث أحداث مراحل النشاط مطلوبًا. وهي واجهة برمجة تطبيقات عامة بدلاً من فئةGenericLifecycleObserver
مخفية. - تمت إضافة إضافات ktx للطريقتَين
LiveData.observe
وTransformations.*
. - تمت إضافة
Transformations.distinctUntilChanged
، ما يؤدي إلى إنشاء عنصر LiveData جديد لا يصدر قيمة إلى أن يتم تغيير قيمة المصدرLiveData
. - تمت إضافة إمكانية استخدام الروتينات المشتركة في ViewModels من خلال إضافة السمة الإضافية
ViewModel.viewModelScope
.
الإصدار 2.1.0
5 أيلول (سبتمبر) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.1.0
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الإصدار 2.1.0-rc01
2 تموز (يوليو) 2019
تم إصدار androidx.lifecycle:*:2.1.0-rc01
بدون أي تغييرات عن androidx.lifecycle:*:2.1.0-beta01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الإصدار 2.1.0-beta01
7 أيار (مايو) 2019
تم طرح androidx.lifecycle:*:2.1.0-beta01
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- تمت ترقية دورات الحياة إلى الإصدار التجريبي: تم تثبيت واجهة برمجة التطبيقات التي تم طرحها في الإصدارات الأولية السابقة، مثل
liveData
دوال الإضافة للتحويلات والملاحظات،ViewModel
وعملية التهيئة باستخدام تفويض الخصائص وغيرها، ولن يتم تغييرها.
الإصدار 2.1.0-alpha04
3 أبريل 2019
تم طرح androidx.lifecycle:*:2.1.0-alpha04
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تغيير غير متوافق: تم تغيير واجهة برمجة التطبيقات الأساسية التي تستند إليها
by viewModels()
وby activityViewModels()
لتتيح استخدامViewModelStore
مباشرةً، بدلاً منViewModelStoreOwner
فقط. (aosp/932932)
الإصدار 2.1.0-alpha03
13 مارس 2019
تم طرح androidx.lifecycle:*:2.1.0-alpha03
. يمكنك الاطّلاع على القائمة الكاملة لعمليات الإضافة إلى المستودع المضمّنة في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تمّت إزالة بطاقة "
ViewModelProvider.KeyedFactory
". لم تتوافق الواجهة الثانية بالإضافة إلىViewModelProvider.Factory
بشكل جيد مع الميزات الجديدة، مثل تفويض المواقع في Kotlinby viewmodels {}
. (aosp/914133)
الإصدار 2.1.0-alpha02
30 يناير 2019
تم طرح androidx.lifecycle 2.1.0-alpha02
.
تغييرات واجهة برمجة التطبيقات
- يتضمّن
LifecycleRegistry
الآن طريقةsetCurrentState()
تحلّ محلّ طريقةsetState()
التي تم إيقافها نهائيًا. (aosp/880715)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى تعطُّل مثيلات
ViewModel
الوهمية عند محوViewModelStore
الحاوية. b/122273087
الإصدار 2.1.0-alpha01
17 كانون الأول (ديسمبر) 2018
تم طرح androidx.lifecycle 2.1.0-alpha01
.
الميزات الجديدة
- تمت إضافة
LifecycleEventObserver
للحالات التي يكون فيها بث أحداث مراحل النشاط مطلوبًا. وهي واجهة برمجة تطبيقات عامة بدلاً من فئةGenericLifecycleObserver
مخفية. - تمت إضافة إضافات ktx للطريقتَين
LiveData.observe
وTransformations.*
. - تمت إضافة الطريقة
Transformations.distinctUntilChanged
. تنشئ هذه الطريقة كائنLiveData
جديدًا لا يصدر قيمة إلى أن يتم تغيير قيمة LiveData المصدر. - إتاحة استخدام الروتينات المشتركة في ViewModels: تمت إضافة السمة الإضافية
ViewModel.viewModelScope
. - تمت إضافة
ViewModelProvider.KeyedFactory
، وهو مصنع لـ ViewModels يتلقّىkey
وClass
في طريقةcreate
.
الإصدار 2.0.0
الإصدار 2.0.0
21 سبتمبر 2018
تم إصدار Lifecycle 2.0.0
مع إصلاح خطأ واحد من 2.0.0-rc01
في ViewModel.
إصلاح الأخطاء
- تم إصلاح قاعدة ProGuard في ViewModel التي أزالت بشكل غير صحيح الدوال الإنشائية b/112230489
الإصدار 2.0.0-beta01
2 يوليو 2018
إصلاح الأخطاء
- تم إصلاح قاعدة ProGuard الخاصة بـ LifecycleObserver للإبقاء على عمليات التنفيذ فقط، وليس الواجهات الفرعية b/71389427
- تم إصلاح قواعد ProGuard الخاصة بـ ViewModel للسماح بالتشويش والتصغير
الإصدارات السابقة لإصدار AndroidX
بالنسبة إلى إصدارات Lifecycle السابقة لإصدار AndroidX التي تلي ذلك، أدرِج التبعيات التالية:
dependencies {
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
// alternatively - just LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData).
// Support library depends on this lightweight import
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of compiler
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "android.arch.core:core-testing:$lifecycle_version"
}
الإصدار 1.1.1
21 مارس 2018
هناك تغيير بسيط واحد: تم نقل android.arch.core.util.Function
من arch:runtime
إلى arch:common
. يتيح ذلك استخدامها بدون الاعتماد على وقت التشغيل، مثلاً في paging:common
أدناه.
lifecycle:common
هي إحدى التبعيات في lifecycle:runtime
، لذا لا يؤثّر هذا التغيير في lifecycle:runtime
مباشرةً، بل يؤثّر فقط في الوحدات التي تعتمد مباشرةً على lifecycle:common
، مثل Paging.
الإصدار 1.1.0
22 يناير 2018
التغييرات في التغليف
تتوفّر الآن تبعيات جديدة أصغر حجمًا بكثير:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
تغييرات واجهة برمجة التطبيقات
- تم الآن إزالة السمتَين
LifecycleActivity
وLifecycleFragment
اللتَين تم إيقافهما نهائيًا، لذا يُرجى استخدامFragmentActivity
أوAppCompatActivity
أوFragment
. - تمت إضافة تعليقات توضيحية
@NonNull
إلىViewModelProviders
وViewModelStores
- تم إيقاف الدالة الإنشائية
ViewModelProviders
نهائيًا، يُرجى استخدام طرقها الثابتة مباشرةً - تم إيقاف
ViewModelProviders.DefaultFactory
نهائيًا، يُرجى استخدامViewModelProvider.AndroidViewModelFactory
- تمت إضافة الطريقة الثابتة
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
لاستردادFactory
ثابت مناسب لإنشاء مثيلاتViewModel
وAndroidViewModel
.