مراحل النشاط
يسرد هذا الجدول جميع العناصر في المجموعة androidx.lifecycle.
| العناصر | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| lifecycle-* | 2.9.2 | - | - | 2.10.0-alpha02 |
| lifecycle-viewmodel-navigation3 | - | - | - | 2.10.0-alpha02 |
تعريف التبعيات
لإضافة تبعية إلى Lifecycle، يجب إضافة مستودع Google Maven إلى مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف التبعيات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.2" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-alpha02" // 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.2" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-alpha02") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.2" 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.2" 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-alpha04
30 يوليو 2025
تم طرح androidx.lifecycle:lifecycle-viewmodel-navigation3:1.0.0-alpha04 وandroidx.lifecycle:lifecycle-viewmodel-navigation3-android:1.0.0-alpha04. يحتوي الإصدار 1.0.0-alpha04 على عمليات الإيداع هذه.
تغييرات التبعية
- تعتمد حزمة Lifecycle Viewmodel Navigation3 الآن على Navigation3 Alpha06.
الإصدار 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-navigation3ViewModelStoreNavEntryDecoratorالذي يوفّرViewModelStoreOwnerفريدًا لمحتوى كلNavEntry. ويوفّر أيضًاrememberViewModelStoreNavEntryDecorator()لضمان أن يتم التعامل مع أداة التزيين بشكل صحيح من خلال تغييرات الإعدادات.
val viewModelDecorator = rememberViewModelStoreNavEntryDecorator()
NavDisplay(
…,
entryDecorators =
listOf(
rememberSceneSetupNavEntryDecorator(),
rememberSavedStateNavEntryDecorator(),
viewModelDecorator
)
)
الإصدار 2.10
الإصدار 2.10.0-alpha02
13 أغسطس 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0-alpha02. يحتوي الإصدار 2.10.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
يمكن الآن للعنصر القابل للإنشاء
LifecycleOwnerإنشاء دورة حياة جذر مستقلة. من خلال ضبطparent = null(بشكلٍ صريح)، تعمل دورة الحياة الجديدة بشكلٍ مستقل عن أي مضيف (مثلActivityأوFragmentأوNavBackStackEntry). تبدأ دورة الحياة بمجرد أن يدخل العنصر القابل للإنشاء إلى التركيب، ويتم إتلافه تلقائيًا عند مغادرته. (I8dfbe، b/433659048)@Composable fun IndependentComponent() { // Create a standalone lifecycle, not tied to the parent Activity/Fragment. LifecycleOwner(parent = null) { val rootLifecycle = LocalLifecycleOwner.current.lifecycle } }
تغييرات واجهة برمجة التطبيقات
- في العنصر القابل للإنشاء
LifecycleOwner، تمّت إعادة تسمية المَعلمةparentLifecycleOwnerلتصبحparent. (I080bc)
إصلاح الأخطاء
- تنقل
LifecycleOwnerالقابلة للإنشاء الآن مراحل نشاطها بشكل صحيح إلىDESTROYEDعند التخلص منها. يمنع ذلك حدوث تسرُّبات محتملة للرمز البرمجي الخارجي الذي يتضمّن مرجعًا إلى دورة الحياة. (I9e5b7، b/433659048) - تغيير الحد الأدنى التلقائي لإصدار SDK من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
المساهمة الخارجية
- أزِل الحقول الداخلية غير الضرورية من
LifecycleOwner. نشكر "جيك وارتون" على مساهمته. (Ideddb)
الإصدار 2.10.0-alpha01
30 يوليو 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0-alpha01. يحتوي الإصدار 2.10.0-alpha01 على عمليات الدمج هذه.
الميزات الجديدة
أضِف عنصر
LifecycleOwnerقابل للإنشاء لتفعيل إنشاء دورات حياة محدودة النطاق مباشرةً ضمن واجهة المستخدم. ويكون ذلك مفيدًا للمكوّنات التي تحتاج إلى إدارة دورات حياتها بشكل مستقل. للاطّلاع على مثال حول كيفية دمج Navigation3 لهذا العنصر الجديد القابل للإنشاء، راجِع aosp/3708610. (76cbf7)@Composable fun MyComposable() { LifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) { val childLifecycleOwner = LocalLifecycleOwner.current } }
تغييرات واجهة برمجة التطبيقات
- أضِف دالة مصنع منشئ
CreationExtras، ما يوفّر واجهة برمجة تطبيقات Kotlin أكثر ملاءمةً وتوافقًا مع اللغة. (Iab2bd) - إضافة دعم مدمج للأنواع القابلة للتصغير في
SavedStateHandle.saved، ما يسهّل حفظ واستعادة السمات القابلة للتصغير (I54d69، b/421325690) - وضع علامة
@VisibleForTestingعلى الشركات المصنِّعةSavedStateHandle(Iff0e0، b/408002794)
الإصدار 2.9
الإصدار 2.9.2
16 يوليو 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.2. يحتوي الإصدار 2.9.2 على عمليات الدمج هذه.
إصلاح الأخطاء
- تمت إضافة أهداف جديدة لمنصة Kotlin المتعددة (KMP) إلى حِزم Lifecycle. تتوافق أداة Lifecycle الآن مع المنصات التالية بشكل كامل: JVM (Android وDesktop)، وNative (Linux وiOS وwatchOS وmacOS وMinGW)، والويب (JavaScript وWasmJS). يُرجى العِلم أنّه لم تتم إضافة أي استهدافات جديدة لمنصة KMP إلى عناصر
*-compose، لأنّ ذلك يعتمد على الإصدار الثابت من Compose 1.9. (I01cb8).
تحديثات التبعيات
- تعتمد Lifecycle الآن على التعليق التوضيحي
1.9.1لإتاحة التوافق مع استهدافات KMP الجديدة (Ic9e4f وb/397701294).
الإصدار 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-testingKMP جديد يوفّر فئة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 على عمليات الدمج هذه.
تحذير بشأن توافق واجهة برمجة التطبيقات Lint
- غيّرت JetBrains
KaCallableMemberCallمن فئة إلى واجهة، ما يؤدي إلى عدم توافق الرمز الثنائي. ويمكن أن يؤدي ذلك إلى حدوث أعطال إذا كان إصدار AGP في مشروعك يختلف عن الإصدار المستخدَم لتجميع عمليات التحقّق من lint. تم إجراء هذا التعديل في aosp/3577172 ولكنّه لم يُدرَج في ملاحظات الإصدار، لذا نوضّحه هنا. الحلّ المقترَح: التحديث إلى أحدث إصدار ثابت من "مكوّن Android الإضافي لبرنامج Gradle" إذا تعذّر عليك التحديث بالكامل، استخدِمandroid.experimental.lint.versionلمواءمة عمليات فحص Lint مع إصدار "مكوّن Android الإضافي لنظام Gradle" (AGP) الذي تستخدمه. راجِع تغييرات في سلوك Compose Runtime للحصول على التفاصيل.
الإصدار 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: تم تحسين توافقNullSafeMutableLiveDataLint مع عمليات التحويل الذكي، ما يؤدي إلى تجنُّب النتائج الموجبة الخاطئة. (85fed6، b/181042665)
تحديثات التبعيات
- من مراحل النشاط
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.ReportFragmentProGuard للسماح بالتشويش . (ff898e1)
المساهمة الخارجية
- نقل
androidx.compose.ui.platform.LocalLifecycleOwnerإلى مجموعة المصادر المشتركة (KMP) نشكر "إيفان ماتكوف" من JetBrains على مساهمته. (8cd5d03) - من دورة الحياة
2.8.5: يتيح الآن مفوّض الإضافة `saveable` في 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-testingKMP جديد يوفّر فئة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 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم تحسين دعم أخطاء
NullSafeMutableLiveDataLint لعمليات التحويل الذكي، ما يؤدي إلى تجنُّب النتائج الإيجابية الخاطئة. (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بعد الآن عند دمج الإصدارات السابقة من تبعياتcompileOnlyLifecycle مع الإصدارات 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-ktxKotlin إلى الوحدة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أو استخدامviewModelFactoryKotlin 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-runtimeAAR. (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أو استخدامviewModelFactoryKotlin 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حيث يمثّلvalueLifecycle.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لتشغيلSideEffects في Compose استنادًا إلى عمليات معاودة الاتصال الخاصة بالحدثينLifecycle.Event.ON_RESUMEوLifecycle.Event.ON_PAUSE. (I60386، b/235529345) - تمت إضافة واجهة برمجة التطبيقات
LifecycleStartEffectلتشغيلSideEffectCompose استنادًا إلى عمليات معاودة الاتصال بالأحداث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)بشكلٍ صحيح عند استخدام أداة الإنشاء ذات الحالة معLifecycle2.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ذات الحالة معLifecycle2.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الآنviewModelFactoryKotlin 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) - يمكن أن تتضمّن مَعلمة الدالة
LiveDataswitchMapالآن قيمة فارغة. (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 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم نقل التغيير من مرحلة النشاط
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) - تم إصلاح مشكلة أخرى في عملية فحص
NullSafeMutableLiveDatalint عند استخدام الأنواع العامة. (#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.addRepeatinJobAPI الجديدة أيضًا. (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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- يمكن الآن لقاعدة
NonNullableMutableLiveDataLint التمييز بشكل صحيح بين متغيرات الحقول التي تختلف في إمكانية قبولها القيمة الخالية. (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 نهائيًا: تم الآن إيقاف دالة إضافة KotlinLiveData.observe()نهائيًا، وهي دالة ضرورية لاستخدام صيغة 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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل في
NullSafeMutableLiveDataLint 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 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح عُطل في عملية فحص
NonNullableMutableLiveDataLint. (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)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تمنع نشر عمليات فحص
MutableLiveDataLint التي تم إصدارها في 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لملء هذا الحقل بشكل صحيح. تتوفّر إضافةfindViewTreeLifecycleOwnerKotlin في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: يضيف العنصر الجديد
lifecycle-runtime-ktxعملية الدمج بين Lifecycle وإجراءات 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والتنفيذ الأساسي لـliveDataDispatchers.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.0android.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.