مراحل النشاط
يسرد هذا الجدول جميع العناصر في المجموعة androidx.lifecycle.
| العناصر | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| lifecycle-* | 2.9.4 | - | 2.10.0-beta01 | - |
| lifecycle-viewmodel-navigation3 | - | - | 2.10.0-beta01 | - |
تحديد الاعتماديات
لإضافة اعتمادية على Lifecycle، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // ViewModel utilities for Compose implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" // Lifecycle utilities for Compose implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // ViewModel integration with Navigation3 implementation "androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01" // Annotation processor kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // ViewModel utilities for Compose implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version") // Lifecycle utilities for Compose implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // ViewModel integration with Navigation3 implementation("androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0-beta01") // Annotation processor kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
Java
Groovy
dependencies { def lifecycle_version = "2.9.4" def arch_version = "2.2.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // LiveData implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" // Lifecycles only (without ViewModel or LiveData) implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" // Saved state module for ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" // Annotation processor annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // alternately - if using Java8, use the following instead of lifecycle-compiler implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" // optional - helpers for implementing LifecycleOwner in a Service implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version" // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version" // optional - ReactiveStreams support for LiveData implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation "androidx.arch.core:core-testing:$arch_version" // optional - Test helpers for Lifecycle runtime testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version" }
Kotlin
dependencies { val lifecycle_version = "2.9.4" val arch_version = "2.2.0" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version") // Lifecycles only (without ViewModel or LiveData) implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version") // Saved state module for ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version") // Annotation processor annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version") // alternately - if using Java8, use the following instead of lifecycle-compiler implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version") // optional - helpers for implementing LifecycleOwner in a Service implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version") // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version") // optional - ReactiveStreams support for LiveData implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version") // optional - Test helpers for LiveData testImplementation("androidx.arch.core:core-testing:$arch_version") // optional - Test helpers for Lifecycle runtime testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 2.10
الإصدار 2.10.0-beta01
22 أكتوبر 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0-beta01. يتضمّن الإصدار 2.10.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية "
ViewModelStoreNavEntryDecoratorDefault" إلى "ViewModelStoreNavEntryDecoratorDefaults"، مع إضافة حرف "س". (I6d27b، b/444447434)
إصلاح الأخطاء
rememberLifecycleOwnerلا يتعطّل بعد الآن إذا تلقّى المالك حدثLifecycle.Event.ON_DESTROYقبل الانتقال إلىLifeycle.State.CREATED. (I6f98e، b/444594991)
الإصدار 2.10.0-alpha05
8 أكتوبر 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0-alpha05. يتضمّن الإصدار 2.10.0-alpha05 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبح
removeViewModelStoreOnPopCallback()الآن جزءًا من عنصرViewModelStoreNavEntryDecoratorDefault، وهو المكان الذي يمكن أن تستدعي فيه المنصات وعمليات التنفيذ الأخرى القيمة التلقائية. (Ia1f23، b/444447434) - تمت إعادة تصميم
ViewModelStoreNavEntryDecoratorمن دالة إلى فئة لتعكس بشكل أفضل وظيفتها كعنصر إنشاء لـNavEntryDecorator، وتمت إعادة تسمية المَعلمةshouldRemoveViewModelStoreالخاصة بالدالة الزخرفية إلىremoveViewModelStoreOnPopلتوضيح أنّه لا يتم استدعاء دالة رد الاتصال هذه إلا عند إزالة إدخال منbackStack. (Iefdc5، b/444447434)
الإصدار 2.10.0-alpha04
24 سبتمبر 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0-alpha04. يتضمّن الإصدار 2.10.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أعِد تصميم العنصر القابل للإنشاء
LifecycleOwnerليصبحrememberLifecycleOwner. تعرض الدالة الآنLifecycleOwnerمباشرةً. لتوفير هذا المالك لتركيبة فرعية، استخدِمCompositionLocalProvider. (Ic57f0، b/444446629) - تمّت إضافة نماذج KMP إلى lifecycle-viewmodel-navigation3 لتمكين JetBrains من توفير عمليات تفرّع تملأ هذه الأهداف وبالتالي تتيح استخدام CMP. (I44a4c)
الإصدار 2.10.0-alpha03
27 أغسطس 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0-alpha03. يتضمّن الإصدار 2.10.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تحديث Compose إلى الإصدار 1.9.0 (I2b9de)
الإصدار 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.4
17 سبتمبر 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.4. يتضمّن الإصدار 2.9.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح خطأ في عدم تطبيق مكوّن Compose Compiler الإضافي، ما أدّى إلى تعطُّل عناصر Lifecycle KMP. (Ie95bc، b/443096483، b/443965665)
الإصدار 2.9.3
27 أغسطس 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.3. يتضمّن الإصدار 2.9.3 هذه التعديلات.
الميزات الجديدة
- تمّت إضافة أهداف جديدة من Kotlin Multiplatform (KMP) إلى عناصر Lifecycle
*-compose. يتوافق Lifecycle الآن مع الأنظمة الأساسية التالية بشكلٍ كامل: JVM (Android وDesktop)، وNative (Linux وiOS وwatchOS وmacOS وMinGW)، والويب (JavaScript وWasmJS). (I0a0e4)
إصلاح الأخطاء
- تحديث
androidx.annotationإلى الإصدار 1.9.1 (Ic9e4f، b/397701294)
الإصدار 2.9.2
16 يوليو 2025
تم طرح androidx.lifecycle:lifecycle-*:2.9.2. يتضمّن الإصدار 2.9.2 هذه التعديلات.
إصلاح الأخطاء
- تمّت إضافة أهداف جديدة من Kotlin Multiplatform (KMP) إلى عناصر Lifecycle. يتوافق Lifecycle الآن مع الأنظمة الأساسية التالية بشكلٍ كامل: JVM (Android وDesktop)، وNative (Linux وiOS وwatchOS وmacOS وMinGW)، والويب (JavaScript وWasmJS). يُرجى العِلم أنّه لم تتم إضافة أي استهدافات جديدة لمنصة KMP إلى عناصر
*-compose، لأنّ ذلك يعتمد على الإصدار الثابت من Compose 1.9. (I01cb8).
تحديثات الاعتماديات
- تعتمد Lifecycle الآن على Annotation
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يتم تفعيلها عند الحاجة، ولن تستدعي lambda الخاص بـinitأو تحفظ أي شيء في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
- أصبحت مكتبة Lifecycle
ViewModel SavedStateمتوافقة الآن مع KMP. يتيح لك ذلك استخدامSavedStateHandleفي الرمز البرمجي الشائع. (Ib6394، b/334076622)
دعم KotlinX Serialization
مع إضافة إمكانية استخدام KotlinX Serialization في SavedState
1.3.0-alpha05، قدّمناsaved، وهو مفوّض خاصية يتم تفعيله عند الحاجة، وذلك لتسهيل تخزين الفئات ذات الوسم@SerializableفيSavedStateHandleواستعادة هذه الفئات تلقائيًا عند إيقاف العملية وإعادة إنشائها. يُرجى ملاحظة أنّ الخاصية المفوضةsavedيتم تفعيلها عند الحاجة، ولن تستدعي lambda الخاص بـinitأو تحفظ أي شيء في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)
تحديثات الاعتماديات
- من مكتبة Lifecycle
2.8.6: تعتمد مكتبة Lifecycle Runtime Compose الآن على Compose Runtime1.7.1 - تعتمد Lifecycle Runtime الآن على 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) - إضافة دعم لهدف
linuxArm64Kotlin Multiplatform (I139d3، b/338268719)
الميزات الجديدة
- يتوفّر عنصر
androidx.lifecycle:lifecycle-viewmodel-testingجديد من KMP يوفّر فئةViewModelScenarioلاختبار ViewModels بشكل مستقل، مع إتاحةonCleared(جميع الأنظمة الأساسية) وSavedStateHandle(نظام التشغيل Android فقط). (337f68d وc9b3409 و9799a95c وb/264602919) - أصبحت عملية إنشاء
ViewModelباستخدامViewModelProviderآمنة الآن، وتمت إزالة التعليقات التوضيحية@MainThread. (Ifd978، b/237006831)
تغييرات واجهة برمجة التطبيقات
- إضافة دالة المصنع
CreationExtras.Key()لتبسيط عملية إنشاء عناصرCreationExtras.Keyمجهولة الهوية (I970ee) - يتضمّن
CreationExtrasالآن عمليات تحميل زائدة لعوامل التشغيل المشابهة للخريطة من أجل إتاحة معالجة المحتوى بطريقة اصطلاحية في Kotlin. تتيح هذه السمة استخدامinو+=و+معCreationExtras. (Ib4353) - تتضمّن
CreationExtrasالآن طرقequalsوhashCodeوtoString. (Ib4353) - يتوفّر
NewInstanceFactoryالآن على أجهزة الكمبيوتر المكتبي وأجهزة Android التي تستخدم JVM. (d3d0892) - خاصية الإضافة المضمّنة لعرض التطبيق الأساسي بأمان في الإصدار 2.0 من لغة Kotlin (I39df2)
إصلاح الأخطاء
- تمت إزالة التحديد اليدوي لإمكانية الوصول إلى واجهات برمجة التطبيقات الجديدة في النظام الأساسي لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle" (مثل الإصدار 3.3 من R8) وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle" (مثل الإصدار 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)بدلاً منه.تم الآن نقل إضافات Kotlin الخاصة بـ
lifecycle-livedata-core-ktxإلى الوحدة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.
لاستيعاب هذا التغيير، أصبحت الطرق، مثل تلك التي تم إنشاؤها في ViewModelProvider والتي كانت تستغرق java.lang.Class<T>، تتضمّن الآن طريقة مكافئة تستغرق kotlin.reflect.KClass<T>.
تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة واجهة برمجة التطبيقات المشتركة:
- يتم الآن إنشاء مثيل
ViewModelProviderمن خلال طرقViewModelProvider.create()بدلاً من استدعاء أداة الإنشاء مباشرةً. - ولا يتوفّر كل من
ViewModelProvider.NewInstanceFactoryوViewModelProvider.AndroidViewModelFactoryإلا على أجهزة Android.- يُنصح بتوسيع نطاق Custom Factories من
ViewModelProvider.Factoryواستخدام الطريقةcreateالتي تأخذCreationExtrasأو استخدامviewModelFactoryKotlin DSL.
- يُنصح بتوسيع نطاق Custom Factories من
- سيؤدي استخدام
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. - يعتمد Lifecycle الآن على Profile Installer 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)
لاستيعاب هذا التغيير، أصبحت الطرق، مثل تلك التي تم إنشاؤها في ViewModelProvider والتي كانت تستغرق java.lang.Class<T>، تتضمّن الآن طريقة مكافئة تستغرق kotlin.reflect.KClass<T>.
تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة واجهة برمجة التطبيقات المشتركة:
- يتم الآن إنشاء مثيل
ViewModelProviderمن خلال طرقViewModelProvider.create()بدلاً من استدعاء أداة الإنشاء مباشرةً. - ولا يتوفّر كل من
ViewModelProvider.NewInstanceFactoryوViewModelProvider.AndroidViewModelFactoryإلا على أجهزة Android.- يُنصح بتوسيع نطاق Custom Factories من
ViewModelProvider.Factoryواستخدام الطريقةcreateالتي تأخذCreationExtrasأو استخدامviewModelFactoryKotlin DSL.
- يُنصح بتوسيع نطاق Custom Factories من
- سيؤدي استخدام
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) - تم الآن نقل إضافات Kotlin الخاصة بـ
lifecycle-viewmodel-ktxإلى وحدة lifecycle الأساسية. (Id787b، b/274800183) - تم الآن نقل إضافات Kotlin الخاصة بـ
lifecycle-runtime-ktxإلى وحدة lifecycle الأساسية. (Ic3686، b/274800183) - تم الآن نقل إضافات Kotlin الخاصة بـ
lifecycle-livedata-core-ktxإلى وحدة lifecycle الأساسية. (I54a3d، b/274800183)
التوافق مع Kotlin Multiplatform
- تتوفّر الآن واجهات برمجة التطبيقات الأساسية لدورة الحياة في
LifecycleوLifecycleOwnerوLifecycleObserverوLifecycle.StateوLifecycle.EventوLifecycleRegistryفي عناصر متوافقة مع Kotlin Multiplatform. (b/317249252)
تغييرات واجهة برمجة التطبيقات
- أصبح استدعاء
LifecycleStartEffectوLifecycleResumeEffectبدون مفتاح خطأ الآن، وذلك باتّباع الاصطلاح نفسه الذي تتّبعه واجهة برمجة التطبيقاتDisposableEffectالتي تحاكيها هاتان الواجهتان. (Ib0e0c، b/323518079) - يتم الآن استخدام
AutoCloseableفيViewModelبدلاً منCloseable. هذا تغيير متوافق مع الإصدارات القديمة. (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 المرتبطة بـ
LifecycleObserver. وهذا يعني أنّ الرمز البرمجي الذي تمّت حمايته باستخدام ProGuard والذي يريد استخدام واجهات برمجة التطبيقات من خلال الانعكاس (مثل استخدام التعليق التوضيحي@OnLifecycleEventالذي تمّ إيقافه نهائيًا منذ فترة طويلة) سيحتاج إلى توفير قواعد الاحتفاظ الخاصة به لحالة الاستخدام المحدّدة.
مراقبة أحداث دورة الحياة
- كبديل لاستخدام
LifecycleEventObserver، يمكنك الآن مراقبةFlowمنLifecycle.Eventباستخدام طريقة الإضافةLifecycle.asFlow(). - يمكن لمستخدمي Jetpack Compose الآن استخدام
LifecycleEventEffectلتشغيل التأثيرات الجانبية في Compose استنادًا إلىLifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.refreshData()
}
// …
}
- يمكن لمستخدمي Jetpack Compose استخدام
LifecycleStartEffectوLifecycleResumeEffectللتعامل مع أزواج الأحداث، مثل الانتقال من حالة البدء إلى حالة الإيقاف ومن حالة الاستئناف إلى حالة الإيقاف المؤقت على التوالي. تتطابق واجهة برمجة التطبيقات هذه مع تلك المتوفّرة فيDisposableEffect، وهي مناسبة للحالات التي يجب فيها عكس التغيير الذي يتم إجراؤه عند الانتقال إلى الأعلى عند الرجوع إلى الأسفل.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
LifecycleStartEffect(viewModel) {
val timeTracking = viewModel.startTrackingTimeOnScreen()
onStopOrDispose {
timeTracking.stopTrackingTimeOnScreen()
}
}
// …
}
اطّلِع على مقالة تنفيذ الرمز البرمجي عند وقوع أحداث دورة الحياة لمزيد من المعلومات.
مراقبة حالة دورة الحياة
- يمكن الآن مراقبة
Lifecycle.Stateالحالي من خلال السمةLifecycle.currentStateFlowالتي تعرضStateFlowحيث يكونvalueهوLifecycle.Stateالحالي. - يمكن لمستخدمي Jetpack Compose استخدام الإضافة
Lifecycle.currentStateAsState()لعرضLifecycle.Stateمباشرةً كـStateفي Compose. هذا التوجيه مكافئ (وبديل أقصر) للتوجيهlifecycle.currentStateFlow.collectAsState().
لمزيد من المعلومات، اطّلِع على مقالة جمع بيانات حالة مراحل النشاط باستخدام التدفقات.
الإصدار 2.7.0-rc02
13 كانون الأول (ديسمبر) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-rc02. يتضمّن الإصدار 2.7.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى عدم استعادة فئات
Parcelableالمخصّصة بشكلٍ صحيح بعد إيقاف العملية وإعادة إنشائها.SavedStateHandleبسبب فقدان معلومات النوع من خلال إطار عمل Android، تتطلّب مصفوفات Parcelable المخصّصة عملاً إضافيًا (إنشاء مصفوفة مكتوبة يدويًا من النوع الصحيح)، وتشير المستندات حولgetوgetLiveDataوgetStateFlowالآن تحديدًا إلى هذا القيد. (I0b55a)
الإصدار 2.7.0-rc01
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-rc01. يتضمّن الإصدار 2.7.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تتخلص الدالتان
LifecycleStartEffectوLifecycleResumeEffectالآن بشكل صحيح من كتلة التأثير وتعيدان إنشائها في حال تغيّرLifecycleOwner. (Ia25c6)
الإصدار 2.7.0-beta01
1 نوفمبر 2023
تم إصدار androidx.lifecycle:lifecycle-*:2.7.0-beta01 بدون أي تغييرات. يتضمّن الإصدار 2.7.0-beta01 هذه التعديلات.
- زيادة رقم الإصدار التجريبي بدون إجراء تغييرات كبيرة على هذا الإصدار
الإصدار 2.7.0-alpha03
18 أكتوبر 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha03. يتضمّن الإصدار 2.7.0-alpha03 هذه التعديلات.
الميزات الجديدة
- يحتوي
lifecycle-runtime-testingالآن على عملية فحص Lint جديدة لتجنُّب ضبطLifecycle.Stateالخاص بـTestLifecycleOwnerباستخدام الحقلcurrentStateعند استخدام دالة برمجية. يقترح فحص Lint الآن تعليقsetCurrentStateالذي يسمح بضبطLifecycle.Stateبدون حظر. (Icf728، b/297880630)
إصلاح الأخطاء
- تم إصلاح مشكلة في
LiveData.switchMapحيث كان عرض مثيلLiveDataنفسه في كل من المكالمة الأولية والمكالمة اللاحقة يمنع إضافة مثيلLiveDataكمصدر. (Ibedcba7)
الإصدار 2.7.0-alpha02
6 سبتمبر 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha02. يتضمّن الإصدار 2.7.0-alpha02 هذه التعديلات.
الميزات الجديدة
- يتضمّن
TestLifecycleOwnerالآن الدالة المعلقةsetCurrentState()لمنح المستخدمين خيار استخدامTestLifecycleOwnerمن داخل روتين فرعي، مثل الروتين الذي يوفّرهrunTest. (I329de، b/259344129)
تغييرات واجهة برمجة التطبيقات
- تم نقل جميع الملفات من وحدات
lifecycle-livedata-ktxإلى وحدةlifecycle-livedataالرئيسية. (I10c6f، b/274800183)
التغييرات في السلوك
- يضبط كلّ من الإضافتين
LiveData.map()وLiveData.switchMap()الآن قيمةvalueفيLiveDataالمعروضة إذا كانتLiveDataالسابقة تتضمّن قيمة، ما يضمن أنّ استخدام LiveData الناتجة في Jetpack Compose يتضمّن الحالة الصحيحة في التركيب الأوّلي. (I91d2b، b/269479952) - يُغلق
addCloseable()فيViewModelالآنCloseableعلى الفور إذا سبق أن تلقّىViewModelطلبًا لإجراء عمليةonCleared(). (I4712e، b/280294730)
إصلاح الأخطاء
- من دورة الحياة
2.6.2: تم إصلاح مشكلة عدم استعادةSavedStateHandleبشكل صحيح بعد إيقاف العملية إذا تمت استعادة الحالة، وتم استدعاءsave()بدون حفظ الحالة فعليًا فيSavedStateRegistryالأصل، ثم تمت استعادة الحالة مرة أخرى. يحلّ هذا الخطأ مشكلة التفاعل بينrememberSaveableوNavHostفي Navigation Compose. (aosp/2729289)
الإصدار 2.7.0-alpha01
26 يوليو 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha01. يتضمّن الإصدار 2.7.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يمكن الآن مراقبة
Lifecycle.Stateفي Compose من خلالLifecycle.currentStateFlow، ما يؤدي إلى عرضStateFlowحيث يمثّلvalueقيمةLifecycle.Stateالحالية. (Ib212d، b/209684871) - يمكن الآن مراقبة
Lifecycle.EventكـFlowمعLifecycle.asFlow().(If2c0f، b/176311030) - تمت إضافة واجهة برمجة التطبيقات
LifecycleResumeEffectلتشغيلSideEffectCompose استنادًا إلى عمليات معاودة الاتصال بالحدث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لتشغيلSideEffects في Compose استنادًا إلىLifecycle.Event. (Ic9794، b/235529345) - تمت إضافة الإضافة
Lifecycle.collectAsState()لعرضLifecycle.Stateمباشرةً باسم ComposeState. هذا التوجيه مكافئ (وبديل أقصر) للتوجيهlifecycle.currentStateFlow.collectAsState(). (I11015، b/235529345)
إصلاح الأخطاء
- يضبط الآن الامتداد
LiveData.distinctUntilChanged()السمةvalueللسمةLiveDataالتي تم إرجاعها إذا كانت السمةLiveDataالسابقة تتضمّن قيمة. لا يؤدي ذلك إلى تغيير سلوك المراقبة، إذ لن يتم تطبيق القيم المعدَّلة من المصدرLiveDataإلا بعد بدء مراقبةLiveDataالتي يتم عرضها منdistinctUntilChanged(). (Ib482f) - تمت إزالة قواعد الاحتفاظ بـ Proguard المرتبطة بـ
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) - يعتمد Lifecycle الآن على 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 في
LifecycleOwnerالتي توفّر الحقلlifecycleScopeإلى العنصرlifecycle-commonمنlifecycle-runtime-ktx. (I41d78، b/240298691) - تم نقل إضافة Kotlin في
Lifecycleالتي توفّر الحقلcoroutineScopeإلى العنصر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ذات الحالة مع الإصدار 2.4 منLifecycleأو إصدار أحدث. (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-composeSavedStateHandleSaver، وهي واجهة برمجة تطبيقات تجريبية تضمن دمج القيم في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.
يتم توفير هذه الإضافات تلقائيًا عند استخدام Activity 1.5.0-alpha01 وFragment 1.5.0-alpha01 وNavigation 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الآن على الإصدار 1.1.1 من Androidx Startup الذي أصلح مشكلة في استخدام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 بدون أي تغييرات منذ الإصدار 2.4.0-beta01 من Lifecycle. يتضمّن الإصدار 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.addRepeatinJobالجديدة أيضًا. (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)
الإصدار 1.0.0-alpha02 من Lifecycle-Viewmodel-Compose
24 شباط (فبراير) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تتضمّن
LocalViewModelStoreOwnerالآن وظائفprovidesيمكن استخدامها معCompositionLocalProvider، ما يحلّ محل واجهة برمجة التطبيقاتasProvidableCompositionLocal(). (I45d24)
الإصدار 1.0.0-alpha01 من Lifecycle-Viewmodel-Compose
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)
المساهمة الخارجية
- تعمل واجهات برمجة التطبيقات الخاصة بتعليق الروتينات الفرعية المتوافقة مع Lifecycle الآن على التعامل بشكل أفضل مع طلبات
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. يجب الترقية إلى النشاط1.2.0-alpha01والجزء1.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.
الإصدار 1.0.0-rc03 من ViewModel-Savedstate
4 كانون الأول (ديسمبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03. يتضمّن الإصدار 1.0.0-rc03 هذه التعديلات.
التغييرات في التبعيات
- تعتمد الآن Lifecycle ViewModel SavedState على Lifecycle
2.2.0-rc03.
الإصدار 1.0.0-rc02 من Viewmodel-Savedstate
7 نوفمبر 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.
التغييرات في التبعيات
- يعتمد الآن على دورة الحياة
2.2.0-rc02.
الإصدار 1.0.0-rc01 من ViewModel-SavedState
23 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 بدون أي تغييرات منذ 1.0.0-beta01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
الإصدار 1.0.0-beta01 من ViewModel-Savedstate
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)
الإصدار 1.0.0-alpha03 من ViewModel-SavedState
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)
الإصدار 1.0.0-alpha02 من ViewModel-SavedState
2 تموز (يوليو) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- تمت إضافة حمولة زائدة
SavedStateHandle.getLiveData()تقبل قيمة تلقائية.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
SavedStateVMFactoryإلىSavedStateViewModelFactory. - تمت إعادة تسمية
AbstractSavedStateVMFactoryإلىAbstractSavedStateViewModelFactory.
ViewModel-Savedstate الإصدار 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.