مراحل النشاط
يعرض هذا الجدول كل العناصر في مجموعة androidx.lifecycle
.
العناصر | الإصدار المستقر | سحب المرشح | الإصدار التجريبي | إصدار أولي |
---|---|---|---|---|
مراحل النشاط-* | 2.8.5 | - | - | 2.9.0-alpha02 |
إنشاء نموذج عرض دورة الحياة | 2.8.5 | - | - | 2.9.0-alpha02 |
إعلان التبعيات
لإضافة اعتماد على Lifecycle، يجب إضافة مستودع Google Maven إلى مشروعك. الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle
لـ
لتطبيقك أو الوحدة التي تستخدمها:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.8.5" 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" // 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.8.5" 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") // 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.8.5" 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.8.5" 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. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى إلقاء نظرة على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية عن طريق بالنقر فوق زر النجمة.
يُرجى الاطّلاع على مستندات أداة تتبُّع المشاكل. لمزيد من المعلومات.
الإصدار 2.9
الإصدار 2.9.0-alpha02
4 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha02
. يحتوي الإصدار 2.9.0-alpha02 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- من رحلة المستخدِم
2.8.5
: يمكنك تعديل قواعد ProGuard فيandroidx.lifecycle.ReportFragment
للسماح بإخفاء مفاتيح فك التشفير . (ff898e1)
مساهمة خارجية
- نقل
androidx.compose.ui.platform.LocalLifecycleOwner
إلى مجموعة المصادر المشتركة (KMP) شكرا "إيفان ماتكوف" من JetBrains على المساهمة. (8cd5d03) - من رحلة المستخدِم
2.8.5
: أصبح تفويض الإضافة SaveStateHandle.saveable` يتيح الآن استخدام القيم القابلة للقيم الفارغة. شكرًا لـ "رومان كالوكيويتش" على هذه المساهمة. (0d78ea6)
الإصدار 2.9.0-alpha01
7 أغسطس 2024
تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha01
. يحتوي الإصدار 2.9.0-alpha01 على عمليات التنفيذ هذه.
منصة Kotlin المتعددة
- تتوافق "
lifecycle-testing
" الآن مع "منصّة KMP". (Iea41e) - إضافة دعم لهدف نظام kotlin متعدد الأنظمة الأساسية
linuxArm64
(I139d3، b/338268719)
الميزات الجديدة
- يتوفّر عنصر KMP جديد من
androidx.lifecycle:lifecycle-viewmodel-testing
يوفِّر فئة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
" الآن على أهداف JVM Desktop وأجهزة Android. (d3d0892) - سمة الإضافة المضمّنة لعرض التطبيق الأساسي بأمان باستخدام الإصدار 2.0 من لغة Kotlin (I39df2)
إصلاح الأخطاء
- تمت إزالة التخطيط اليدوي للوصول إلى واجهات برمجة التطبيقات الجديدة للنظام الأساسي نظرًا لحدوث ذلك تلقائيًا عبر نماذج واجهة برمجة التطبيقات عند استخدام R8 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) وكذلك لجميع الإصدارات عند استخدام AGP 8.1 أو الإصدارات الأحدث (مثل D8 الإصدار 8.1). وننصح العملاء الذين لا يستخدمون AGP بالتحديث إلى الإصدار 8.1 من نظام التشغيل D8 أو الإصدارات الأحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (If6b4c، وb/345472586)
الإصدار 2.8
الإصدار 2.8.5
4 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.5
. يحتوي الإصدار 2.8.5 على عمليات الالتزام هذه.
إصلاح الأخطاء
- عدِّل قواعد ProGuard في
androidx.lifecycle.ReportFragment
للسماح بإخفاء مفاتيح فك التشفير . (ff898e1)
مساهمة خارجية
- يتيح تفويض الإضافة
SavedStateHandle.saveable
الآن استخدام القيم القابلة للقيم الفارغة. شكرًا لـ "رومان كالوكيويتش" على هذه المساهمة. (0d78ea6)
الإصدار 2.8.4
24 يوليو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.4
. يحتوي الإصدار 2.8.4 على عمليات الالتزام هذه.
إصلاح الأخطاء
- يعالج
LiveData.asFlow()
الآن بشكل صحيح الحالات التي يكتمل فيها المسار المعروض فورًا بعد تلقّي قيمة سبق أن تم ضبطها فيLiveData
(على سبيل المثال، عند استخدامtake(1)
). (I9c566) - أصبح إكمال عملية "
Lifecycle*Effect
" ثابتًا الآن (أي أنّه إذا تم طلبonStopOrDispose
بسبب إيقاف "دورة الحياة"، لن يتم طلبها مرة ثانية عند التخلص من المنتج إلا إذا تعود دورة الحياة إلىSTARTED
مرة أخرى). (I5f607، b/352364595)
الإصدار 2.8.3
1 يوليو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.3
. يحتوي الإصدار 2.8.3 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة التوافق مع الإصدار 2.8 من Lifecycle 2.8 والإصدارات الأقدم مع نظام Compose 1.6.0 والإصدارات الأقدم عند استخدام تقليص الرموز. (aosp/3133056 وb/346808608)
الإصدار 2.8.2
12 يونيو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.2
. يحتوي الإصدار 2.8.2 على عمليات الالتزام هذه.
إصلاح الأخطاء
- تم إصلاح أخطاء
CompositionLocal LocalLifecycleOwner not present
عند استخدام Lifecycle 2.8.X مع الإصدار 1.6.X أو الإصدارات الأقدم. يمكنك الآن استخدام الإصدار 2.8.2 من Lifecycle مع أي إصدار من Compose بدون الحاجة إلى أي حلول بديلة. (aosp/3105647، b/336842920) - لن يتعطّل
ViewModelProvider
بعد ذلك عند مزج الإصدارات السابقة من اعتماديات مراحل النشاطcompileOnly
مع الإصدارات 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)
الإصدار
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
المحدد. على سبيل المثال، يمكن استخدام ذلك مع ميزة "إنشاء التنقل" لتجنّب معالجة أحداث النقر بعد بدء عملية الانتقال إلى شاشة أخرى: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
لتجنُّب العديد من النتائج الموجبة الخاطئة.
التوافق مع الأنظمة الأساسية المتعدّدة بلغة Kotlin في دورة الحياة
يتم الآن شحن واجهات برمجة التطبيقات الأساسية لمراحل النشاط في 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)
يتم الآن شحن عناصر lifecycle-viewmodel
وواجهات برمجة التطبيقات، مثل ViewModel
وViewModelStore
وViewModelStoreOwner
وViewModelProvider
، في شكل عناصر متوافقة مع منصة Kotlin المتعددة.
لاستيعاب هذا التغيير، أصبحت الآن الطرق مثل تلك المستخدمة على ViewModelProvider
والتي تم أخذ java.lang.Class<T>
منها مكافئة للطريقة kotlin.reflect.KClass<T>
.
تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة العرض الشائعة لواجهة برمجة التطبيقات:
- يتم الآن إنشاء مثيل
ViewModelProvider
باستخدام طرقViewModelProvider.create()
بدلاً من استدعاء الدالة الإنشائية مباشرةً. - لا يتوفّر كل من
ViewModelProvider.NewInstanceFactory
وViewModelProvider.AndroidViewModelFactory
إلا على Android.- يُنصح بتمديد استخدام المصانع المخصّصة من
ViewModelProvider.Factory
واستخدام طريقةcreate
التي تستخدمCreationExtras
أو استخدامviewModelFactory
Kotlin DSL.
- يُنصح بتمديد استخدام المصانع المخصّصة من
- وسيؤدي استخدام "
ViewModelProvider
" بدون مصنع مخصّص على الأنظمة الأساسية التي لا تستخدم JVM إلى حدوثUnsupportedOperationException
. على أنظمة JVM الأساسية، يتم الحفاظ على التوافق باستخدام الدالة الإنشائية ViewModel التي لا تتطلب وسيطًا في حال عدم توفير مصنع مخصص. - سينتقل
viewModelScope
إلىEmptyCoroutineContext
في المنصات التي لا يتوفّر فيهاDispatchers.Main
(مثل Linux).
العناصر المتأثرة:
- ينقل
lifecycle-viewmodel
معظم واجهات برمجة التطبيقات إلىcommon
ويتوافق مع jvm وiOS بالإضافة إلى Android. lifecycle-viewmodel-ktx
فارغة الآن، مع نقل جميع واجهات برمجة التطبيقات إلىlifecycle-viewmodel
.- ينقل
lifecycle-viewmodel-compose
جميع واجهات برمجة التطبيقات إلىcommon
ويشحن عناصر Android، ما يتوافق مع التوافق مع الأنظمة الأساسية المتعددة فيandroidx.compose
.
تغييرات السلوك
- ستعرض
InitializerViewModelFactory
(بما في ذلك دالة الإنشاءviewModelFactory
) الآنIllegalArgumentException
إذا سبق إضافةinitializer
معclazz: KClass<VM : ViewModel>
نفسه. (Ic3a36)
المشاكل المعروفة
- تتطلب ميزة "
lifecycle-*:2.8.0
" حدًّا أدنى من الإصدار في ميزة "إنشاء" يساوي 1.7.0-alpha05 (b/336842920).
الإصدار 2.8.0-rc01
1 مايو 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-rc01
. يحتوي الإصدار 2.8.0-rc01 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تم إصلاح المشكلة المتمثلة في عدم تجميع الملف الشخصي الأساسي لصفَّين (
lifecycle-common
) بشكل صحيح. هذه المنتجات مضمّنة الآن في الاقتراحات المطبّقة تلقائيًا فيlifecycle-runtime
. (aosp/3038274، b/322382422) - تم إصلاح تغيير غير مقصود في الترتيب على طريقة محو مثيلات
AutoCloseable
المرتبطة بنموذج ViewModel، أي الترتيب السابق الذي يبلغaddCloseable(String, AutoCloseable)
، ثمaddClosable(AutoCloseable)
، ثم تمت استعادةonCleared()
. (aosp/3041632) - يمكنك تحسين سلوك الإنشاء التلقائي لـ
viewModelScope
للبيئات الأصلية وبيئات JVM Desktop. (aosp/3039221)
مساهمة خارجية
- شكرًا "فيكتور كروب" على تحسين عملية البحث عن سلسلة التعليمات الرئيسية على 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
". لاستيعاب هذا التغيير، تقبل طريقةviewModel
القابلة للتعديل الآنKClass
بالإضافة إلىjava.lang.Class
. (b/330323282)
إصلاح الأخطاء
- تمت إعادة هيكلة
NullSafeMutableLiveData
لتجنُّب العديد من النتائج الموجبة الخاطئة. (I2d8c1 وIafb18 وI03463 وI7ecef)
تعديل بشأن التبعية
- تعتمد عناصر
lifecycle-viewmodel-compose
الآن على الإصدار 1.6.0 من Compose. - تعتمد دورة الحياة الآن على الإصدار 1.3.1 من أداة تثبيت الملف الشخصي.
الإصدار 2.8.0-alpha03
20 مارس 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha03
. يحتوي الإصدار 2.8.0-alpha03 على عمليات التنفيذ هذه.
الميزات الجديدة
أصبحت
ViewModel.viewModelScope
الآن مَعلمة دالة إنشاء قابلة للإلغاء، ما يسمح لك بإدخال المُرسل الخاص بك وSupervisorJob()
أو إلغاء الإعداد التلقائي باستخدامbackgroundScope
المتاحة ضمنrunTest
. (I2817c، b/264598574)class MyViewModel( // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob() ) : ViewModel(viewModelScope) { // Use viewModelScope as before, without any code changes } // Allows overriding the viewModelScope in a test fun Test() = runTest { val viewModel = MyViewModel(backgroundScope) }
توافق Kotlin متعدد الأنظمة الأساسية
يتم الآن شحن عناصر lifecycle-viewmodel
وواجهات برمجة التطبيقات، مثل ViewModel
وViewModelStore
وViewModelStoreOwner
وViewModelProvider
، في شكل عناصر متوافقة مع منصة Kotlin المتعددة. (b/214568825)
لاستيعاب هذا التغيير، أصبحت الآن الطرق مثل تلك المستخدمة على ViewModelProvider
والتي تم أخذ java.lang.Class<T>
منها مكافئة للطريقة kotlin.reflect.KClass<T>
.
تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة العرض الشائعة لواجهة برمجة التطبيقات:
- يتم الآن إنشاء مثيل
ViewModelProvider
باستخدام طرقViewModelProvider.create()
بدلاً من استدعاء الدالة الإنشائية مباشرةً. - لا يتوفّر كل من
ViewModelProvider.NewInstanceFactory
وViewModelProvider.AndroidViewModelFactory
إلا على Android.- يُنصح بتمديد استخدام المصانع المخصّصة من
ViewModelProvider.Factory
واستخدام طريقةcreate
التي تستخدمCreationExtras
أو استخدامviewModelFactory
Kotlin DSL.
- يُنصح بتمديد استخدام المصانع المخصّصة من
- وسيؤدي استخدام "
ViewModelProvider
" بدون مصنع مخصّص على الأنظمة الأساسية التي لا تستخدم JVM إلى حدوثUnsupportedOperationException
. على أنظمة JVM الأساسية، يتم الحفاظ على التوافق باستخدام الدالة الإنشائية ViewModel التي لا تتطلب وسيطًا في حال عدم توفير مصنع مخصص. - سينتقل
viewModelScope
إلىEmptyCoroutineContext
في المنصات التي لا يتوفّر فيهاDispatchers.Main
(مثل Linux).
تغييرات السلوك
- ستعرض
InitializerViewModelFactory
(بما في ذلك دالة الإنشاءviewModelFactory
) الآنIllegalArgumentException
إذا سبق إضافةinitializer
معclazz: KClass<VM : ViewModel>
نفسه. (Ic3a36)
إصلاح الأخطاء
- يتعامل
ViewModel.getCloseable
الآن مع المفاتيح المكرّرة: إذا كانkey
لديه موردAutoCloseable
مرتبط به، سيتم استبدال المورد القديم وإغلاقه على الفور. (Ibeb67) - الوصول إلى
viewModelScope
منViewModel
أصبح آمنًا الآن. (If4766 وb/322407038)
مساهمة خارجية
- تم نقل
LocalLifecycleOwner
من واجهة مستخدم Compose إلى عملية الإنشاء في وقت التشغيل خلال مراحل النشاط، وذلك كي يتم استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة مستخدم Compose. شكرًا لـ "جيك وارتون" على هذه المساهمة. (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
المحدَّد. على سبيل المثال، يمكن استخدام ذلك مع ميزة "إنشاء التنقل" لتجنّب معالجة أحداث النقر بعد بدء الانتقال إلى شاشة أخرى:onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
(Icba83، b/317230685)
إحالات Kotlin الناجحة
- تمت كتابة
ViewModel
الآن بلغة Kotlin (I16f26، b/214568825). - تم الآن نقل إضافات Kotlin
lifecycle-viewmodel-ktx
إلى وحدة مراحل النشاط الأساسية. (Id787b، b/274800183) - تم الآن نقل إضافات Kotlin
lifecycle-runtime-ktx
إلى وحدة مراحل النشاط الأساسية. (Ic3686، b/274800183) - تم الآن نقل إضافات Kotlin
lifecycle-livedata-core-ktx
إلى وحدة مراحل النشاط الأساسية. (I54a3d، b/274800183)
توافق Kotlin متعدد الأنظمة الأساسية
- يتم الآن شحن واجهات برمجة التطبيقات الأساسية لمراحل النشاط في
Lifecycle
وLifecycleOwner
وLifecycleObserver
وLifecycle.State
وLifecycle.Event
وLifecycleRegistry
في شكل عناصر متوافقة مع Kotlin Multiplatform. (b/317249252)
التغييرات في واجهة برمجة التطبيقات
- إنّ طلب
LifecycleStartEffect
وLifecycleResumeEffect
بدون مفتاح هو الآن خطأ، ويتبع الطريقة نفسها المتّبعة في واجهة برمجة التطبيقاتDisposableEffect
التي يتم مطابقتها لواجهات برمجة التطبيقات هذه. (Ib0e0c، b/323518079) - يستخدم تطبيق "
ViewModel
" الآنAutoCloseable
بدلاً منCloseable
. وهذا يعد تغييرًا متوافقًا مع الأنظمة القديمة. (I27f8e، b/214568825) - تم إيقاف
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData)
لصالحLiveData.toPublisher(lifecycleOwner)
. (Iabe29، b/262623005)
مساهمة خارجية
- شكرا "إيفان ماتكوف" من Jetbrains على مساعدته في نقل الدورة التدريبية إلى النظام الأساسي Kotlin المتعدد. (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
الإصدار
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
. - يعمل هذا الإصدار على إصلاح المشكلة المتمثلة في عدم استعادة
SavedStateHandle
فئاتParcelable
المخصصة بشكل صحيح بعد توقُّف العملية وإعادة الإنشاء. بسبب أنواع المعلومات غير المتاحة في إطار عمل Android، تتطلّب صفائف بيانات الأراضي المخصّصة جهدًا إضافيًا (إنشاء مصفوفة مكتوبة من النوع الصحيح يدويًا) وتستدعي الآن مستنداتget
وgetLiveData
وgetStateFlow
هذا القيد تحديدًا. - تمّت إزالة قواعد Proguard المرتبطة بـ
LifecycleObserver
. يعني هذا أنّ الرموز البرمجية المحمية التي تريد استخدام واجهات برمجة التطبيقات من خلال الانعكاس (مثل استخدام تعليق@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 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم استعادة
SavedStateHandle
صفوفParcelable
المخصّصة بشكل صحيح بعد توقُّف العملية وإعادة تشغيلها. بسبب أنواع المعلومات غير المتاحة في إطار عمل Android، تتطلّب صفائف بيانات الأراضي المخصّصة جهدًا إضافيًا (إنشاء مصفوفة مكتوبة من النوع الصحيح يدويًا) وتستدعي الآن مستندات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
في ميزة "إنشاء التنقل". (aosp/2729289)
الإصدار 2.7.0-alpha01
26 تموز (يوليو) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha01
. يحتوي الإصدار 2.7.0-alpha01 على هذه عمليات التنفيذ.
التغييرات في واجهة برمجة التطبيقات
- أصبحت ميزة "
Lifecycle.State
" قابلة للتتبّع عبرLifecycle.currentStateFlow
، ما يؤدي إلى عرض علامةStateFlow
حيث تمثّلvalue
قيمةLifecycle.State
الحالية. (Ib212d، b/209684871) - يمكن الآن مُلاحظة
Lifecycle.Event
على أنّهاFlow
باستخدامLifecycle.asFlow().
(If2c0f وb/176311030). - تمت إضافة واجهة برمجة تطبيقات
LifecycleResumeEffect
لتشغيل عناصرSideEffect
استنادًا إلى استدعاءات أحداثLifecycle.Event.ON_RESUME
وLifecycle.Event.ON_PAUSE
. (I60386، b/235529345) - تمت إضافة واجهة برمجة تطبيقات
LifecycleStartEffect
لتشغيل عناصرSideEffect
استنادًا إلى عمليات استدعاء الأحداثLifecycle.Event.ON_START
وLifecycle.Event.ON_STOP
. (I5a8d1، b/235529345) - تمت إضافة واجهة برمجة تطبيقات
LifecycleEventEffect
لتنفيذ إنشاءSideEffect
استنادًا إلىLifecycle.Event
. (Ic9794، b/235529345) - تم إدراج إضافة
Lifecycle.collectAsState()
لعرضLifecycle.State
مباشرةً في حالة إنشاءState
. يعادل ذلكlifecycle.currentStateFlow.collectAsState()
(وبديل أقصر). (I11015، b/235529345)
إصلاح الأخطاء
- تضبط الإضافة
LiveData.distinctUntilChanged()
الآنvalue
منLiveData
التي تم عرضها إذا كانت قيمةLiveData
السابقة قد تم ضبطها. لا يؤدي ذلك إلى تغيير سلوك الملاحظة، إذ سيتم تطبيق القيم المعدَّلة من المصدرLiveData
فقط عند البدء في ملاحظة قيمLiveData
المعروضة منdistinctUntilChanged()
. (Ib482f) - تمّت إزالة قواعد Proguard المرتبطة بـ
LifecycleObserver
. يعني هذا أنّ الرموز البرمجية المحمية التي تتطلب استخدام واجهات برمجة التطبيقات من خلال الانعكاس يجب أن توفّر قواعد الاحتفاظ الخاصة بها لحالة الاستخدام الخاصة بها. (Ia12fd)
الإصدار 2.6
الإصدار 2.6.2
6 أيلول (سبتمبر) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.2
. يحتوي الإصدار 2.6.2 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إمكانية استعادة
SavedStateHandle
بشكل صحيح بعد وفاة العملية في حال استعادة الحالة، وتم استدعاءsave()
بدون حفظ الحالة فعليًا فيSavedStateRegistry
الرئيسي، ثم تمت استعادة الحالة مرة أخرى. يؤدي هذا إلى إصلاح التفاعل بينrememberSaveable
وNavHost
في ميزة "إنشاء التنقل". (aosp/2729289)
الإصدار 2.6.1
22 آذار (مارس) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.6.1
. يحتوي الإصدار 2.6.1 على هذه الالتزامات.
التحديثات المتعلقة بالاعتمادية
- تعتمد ميزة "
lifecycle-viewmodel-savedstate
" الآن على SavedState1.2.1
. (cd7251) - تعتمد دورة الحياة الآن على ProfileInstaller
1.3.0
. (f9d30b)
الإصدار
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 (حالة Compose) مع مراعاة مراحل النشاط. - تم إيقاف
Lifecycle.launchWhenX
طريقة وLifecycle.whenX
طريقة نهائيًا لأنّ استخدام مُرسِل الإيقاف المؤقت يمكن أن يؤدي إلى إهدار موارد في بعض الحالات. ويُنصح باستخدام السمةLifecycle.repeatOnLifecycle
. لمزيد من المعلومات عن تعليق العمل لمرة واحدة، يُرجى الاطّلاع على هذا الشرح حول سبب عدم أمان هذا الإجراء في حد ذاته. - تحويل Kotlin: تم تحويل عدد كبير من صفوف مراحل النشاط إلى لغة 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 الناجحة
- تمت كتابة
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 الناجحة
- تمت كتابة
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 الناجحة
- تمت كتابة
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 وI59a23 و{109a23 وI9593d.
إصلاح الأخطاء
SavedStateHandle
لم يعد يتعطّل معClassCastException
عند الاتصال بـget()
بالفئة غير الصحيحة الكتابة. (I6ae7c)
الإصدار 2.6.0-alpha03
24 تشرين الأول (أكتوبر) 2022
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha03
. يحتوي الإصدار 2.6.0-alpha03 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح مشكلة تتعلق بالقيود بين وحدات "مراحل النشاط" المختلفة التي لا تعمل على النحو المنشود. (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
الآن قيودًا تضمن أنّ جميع عناصر مراحل النشاط المترابطة تستخدم الإصدار نفسه، ما يؤدي إلى ترقية الاعتمادية الأخرى تلقائيًا عند ترقية أحد العناصر. b/242871265 - تنشئ خدمة "
FlowLiveData.asFlow()
" الآنcallbackFlow
بدلاً من استخدام عملية تنفيذ "Channel
" الخاصة بها لضمان أمان سلسلة المحادثات والحفاظ على السياق. (I4a8b2، b/200596935) - تحتفظ دالة
asLiveData
فيFlowLiveData
الآن بالقيمة الأوليةStateFlow
عند إنشاء كائنLiveData
الجديد. (I3f530، b/157380488) - من دورة الحياة
2.5.1
: عمليات التنفيذ المخصّصة لـAndroidViewModelFactory
تستدعي الآن الدالةcreate(modelClass)
بشكل صحيح عند استخدام الدالة الإنشائية ذات الحالة الصلبة مع الإصدار 2.4 منLifecycle
والإصدارات الأحدث (I5b315، b/238011621)
الإصدار 2.6.0-alpha01
29 حزيران (يونيو) 2022
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha01
. يحتوي الإصدار 2.6.0-alpha01 على هذه عمليات التنفيذ.
الميزات الجديدة
- تمت إضافة إضافة جديدة في
StateFlow
وFlow
لـcollectAsStateWithLifecycle
والتي تجمع من التدفقات وتمثل أحدث قيمة لها كحالة Compose (حالة 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()
تعرض رمز KotlinStateFlow
لرصد التغييرات في القيم كبديل لاستخدامLiveData
.ViewModel CreationExtra: عند كتابة
ViewModelProvider.Factory
مخصّصة، لم يعُد من الضروري تمديدAndroidViewModelFactory
أوAbstractSavedStateViewModelFactory
للوصول إلىApplication
أوSavedStateHandle
على التوالي. بدلاً من ذلك، يتم توفير هذه الحقول لكل فئة فرعيةViewModelProvider.Factory
باعتبارهاCreationExtras
من خلال التحميل الزائد الجديد لـcreate
:create(Class<T>, CreationExtras)
. يتم توفير هذه الميزات الإضافية تلقائيًا من خلال "النشاط" أو "الجزء" عند استخدام النشاط1.5.0
والقسم1.5.0
، على التوالي.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }
يوفّر
lifecycle-viewmodel
الآن حزمةviewModelFactory
Kotlin DSL التي تتيح لك تحديدViewModelProvider.Factory
من خلال أداة إعداد lambda واحدة أو أكثر، مع استخدام إعداد واحد لكل فئةViewModel
محدّدة يتوافق معها المصنع، وذلك باستخدامCreationExtras
كمصدر البيانات الأساسي.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }
يوفّر
lifecycle-viewmodel-compose
الآن واجهة برمجة تطبيقاتviewModel()
تستخدم مصنع lambda لإنشاء مثيلViewModel
بدون الحاجة إلى إنشاءViewModelProvider.Factory
مخصّص.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }
دمج SavedStateHandle Compose Saver: تحتوي عناصر
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
بعد ذلك عند مزج الإصدارات السابقة من تبعيات دورة الحياة المجمّعة فقط مع الإصدارات 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).
إصلاح الأخطاء
- تم إصلاح مشكلة دمج
NavHost
جهازNavHost
في علامة تبويب أخرى غير أساسية للتنقل في الجزء السفلي إلىIllegalStateException
عند استخدام عدة حزم خلفية. (I11bd5، b/228865698)
الإصدار 2.5.0-alpha06
6 نيسان (أبريل) 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha06
. يحتوي الإصدار 2.5.0-alpha06 على هذه عمليات التنفيذ.
الميزات الجديدة
- إضافة الحمل الزائد التجريبي على
MutableState
إلىSavedStateHandle.saveable
التعادل معrememberSaveable
(I38cfe، b/224565154)
التغييرات في واجهة برمجة التطبيقات
- تم عرض الإجابة "
CreationExtras
" تجريدية بدلاً من الإجابة "مغلقة". (Ib8a7a)
إصلاح الأخطاء
- تم إصلاح خطأ
IllegalStateException: Already attached to lifecycleOwner
ناتج عنSavedStateHandleController
. (I7ea47، b/215406268)
الإصدار 2.5.0-alpha05
23 آذار (مارس) 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha05
. يحتوي الإصدار 2.5.0-alpha05 على هذه عمليات التنفيذ.
الميزات الجديدة
- توفّر وحدة
lifecycle-viewmodel-compose
الآنSavedStateHandleSaver
، وهي واجهة برمجة تطبيقات تجريبية تضمن دمج القيم فيSavedStateHandle
بشكل صحيح مع حالة المثيل المحفوظة نفسها التي تستخدمهاrememberSaveable
. (Ia88b7، b/195689777)
التغييرات في واجهة برمجة التطبيقات
- تم إصلاح مشكلة التوافق في دورة الحياة 2.3 وإصدارات مراحل النشاط الأحدث في 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) - يمكن لمعلمة الدالة
switchMap
LiveData
بها الآن مخرجات قابلة للقيم الفارغة. (I40396، b/132923666) - تمت إضافة تعليقات توضيحية للإضافات -ktx
LiveData
باستخدام@CheckResult
لفرض استخدام النتيجة عند استدعاء هذه الأخرى. (Ia0f05، b/207325134)
تغيّرات السلوك
- يخزِّن
SavedStateHandle
الآن القيمة التلقائية بشكل صحيح عندما لا توجد قيمة للمفتاح المحدد. (I1c6ce، b/178510877)
إصلاح الأخطاء
- من دورة الحياة
2.4.1
: تم التعديل فيlifecycle-process
للاعتماد على الإصدار 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 على هذه عمليات التنفيذ.
العناصر الإضافية لإنشاء نموذج View
باستخدام هذا الإصدار، نضع الأساس لإعادة هيكلة طريقة إنشاء ViewModel
. فبدلاً من مجموعة صلبة من الفئات الفرعية لـ ViewModelProvider.Factory
والتي يضيف كل منها وظيفة إضافية (السماح بمَعلمة الدالة الإنشائية Application
عبر AndroidViewModelFactory
، ما يسمح بمَعلمة الدالة الإنشائية SavedStateHandle
من خلال SavedStateViewModelFactory
وAbstractSavedStateViewModelFactory
، وما إلى ذلك)، سيتم الانتقال إلى عالم المصانع التي لا تتضمّن حالة والتي تعتمد على مفهوم جديد، CreationExtras
. (Ia7343، وb/188691010، وb/188541057)
نتيجة لهذا التغيير، لم يعُد يتم إجراء مكالمات مباشرة من قِبل "ViewModelProvider
" باستخدام طريقة create(Class<T>)
السابقة من ViewModelProvider.Factory
. وبدلاً من ذلك، ستنتج عن ذلك حمل زائد جديد من create
: create(Class<T>, CreationExtras)
. وهذا يعني أنّ أي تنفيذ مباشر لمثيل ViewModelProvider.Factory
يمكنه الآن الوصول إلى كل من CreationExtras
الجديدة التالية:
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY
: يوفّر جهازString
هذا إمكانية الوصول إلى المفتاح المخصّص الذي اخترته إلىViewModelProvider.get()
.- يوفّر
ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY
إمكانية الوصول إلى الصفApplication
. - يوفّر
SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY
إمكانية الوصول إلىSavedStateRegistryOwner
الذي يتم استخدامه لإنشاء نموذج ViewModel هذا. - يوفّر
SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY
إمكانية الوصول إلىViewModelStoreOwner
الذي يتم استخدامه لإنشاء نموذج ViewModel هذا. - توفّر
SavedStateHandleSupport.DEFAULT_ARGS_KEY
إمكانية الوصول إلىBundle
من الوسيطات التي يجب استخدامها لإنشاءSavedStateHandle
.
يتم توفير هذه الميزات الإضافية تلقائيًا عند استخدام النشاط 1.5.0-alpha01
والجزء 1.5.0-alpha01
والتنقّل 2.5.0-alpha01
. إذا كنت تستخدم إصدارًا سابقًا من هذه المكتبات، سيكون CreationExtras
فارغًا، إذ تمت إعادة كتابة جميع الفئات الفرعية الحالية من ViewModelProvider.Factory
لإتاحة مسار الإنشاء القديم الذي كانت تستخدمه في الإصدارات السابقة منها، بالإضافة إلى مسار CreationExtras
الذي سيتم استخدامه من الآن فصاعدًا.
تسمح لك CreationExtras
هذه إنشاء ViewModelProvider.Factory
الذي يمرر المعلومات التي تحتاجها فقط إلى كل ViewModel
بدون الاعتماد على تسلسل هرمي دقيق للفئات الفرعية مصانع:
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
المخصّص على شكل حقن مساعِد مضمّن. ستتم إتاحة هذه العناصر الإضافية تلقائيًا في المصنع المخصّص عند استخدامها مباشرةً مع ViewModelProvider
أو عند استخدام إضافتَي المواقع by viewModels()
وby activityViewModels()
Kotlin. (I79f2b، وb/207012584، وb/207012585، وb/207012490)
إصلاح الأخطاء
- تم إصلاح مشكلة تتعلق بتقديم القيمة التلقائية
إلى
SavedStateHandle
ستظهر مرة أخرى بعد المعالجة الموت والترفيه، حتى لو كان ذلك يتعلق تمت إزالته منSavedStateHandle
. نتيجة هذا، لن يدمجSavedStateHandle
اللغة التلقائية بعد الآن القيم والقيم التي تمت استعادتها معًا، بدلاً من استخدام القيم التي يتم استردادها كمصدر للحقيقة. (I53a4b)
الإصدار 2.4
الإصدار 2.4.1
9 شباط (فبراير) 2022
تم طرح androidx.lifecycle:lifecycle-*:2.4.1
. يحتوي الإصدار 2.4.1 على عمليات الالتزام هذه.
إصلاح الأخطاء
- الرجوع إلى الإصدار السابق من دورة الحياة
2.5.0-alpha01
: تم إصلاح مشكلة متعلّقة بتوفير القيمة التلقائية إلىSavedStateHandle
سيظهر مرة أخرى بعد انتهاء العملية الموت والترفيه، حتى لو كان ذلك يتعلق تمت إزالته منSavedStateHandle
. نتيجة هذا، لن يدمجSavedStateHandle
اللغة التلقائية بعد الآن القيم والقيم التي تمت استعادتها معًا، بدلاً من استخدام القيم التي يتم استردادها كمصدر للحقيقة. (I53a4b) - يعتمد تطبيق "
lifecycle-process
" الآن على الإصدار Androidx Startup 1.1.1 الذي أصلح تراجعًا في موضع تسبب استخدامProcessLifecycleInitializer
في حدوثStartupException
. (b/216490724)
الإصدار
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
، واجهة برمجة التطبيقات التي تنبعث منها قيمًا من "مسار عمليات النقل" عندما تكون دورة الحياة في حالة معيّنة على الأقل.- تم نقل "
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. يحتوي الإصدار 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)
إصلاح الأخطاء
- تم إصلاح مشكلة في فحص أداة Lint
NullSafeMutableLiveData
عندما يحتوي الحقل على مفاتيح تعديل. (#147، b/183696616) - تم إصلاح مشكلة أخرى في فحص الوبر
NullSafeMutableLiveData
عند استخدام العامة. (#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
تنبعث منها القيم من عملية مسار التنفيذ عندما تكون مراحل النشاط في حالة محدّدة على الأقل، وذلك باستخدام واجهة برمجة التطبيقاتLifecycle.repeatOnLifecycle
. وهذا بديل لواجهة برمجة تطبيقاتLifecycleOwner.addRepeatinJob
الجديدة أيضًا. (I0f4cd)
إصلاح الأخطاء
- من دورة الحياة 2.3.1: يمكن الآن لقاعدة
NonNullableMutableLiveData
Lint بشكل صحيح التمييز بين متغيرات الحقل ذات قابلية القيم الفارغة المختلفة. (b/169249668)
الإصدار 1.0.0 من نموذج Compose لمراحل النشاط
الإصدار 1.0.0-alpha07
16 حزيران (يونيو) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07
. يحتوي الإصدار 1.0.0-alpha07 على هذه عمليات التنفيذ.
كسر التغييرات في واجهة برمجة التطبيقات
- يحتاج
viewModel()
الآن إلى اختياريةViewModelStoreOwner
، لتسهيل العمل مع مالكين بخلافLocalViewModelStoreOwner
. على سبيل المثال، يمكنك الآن استخدامviewModel(navBackStackEntry)
لاسترداد نموذج عرض مرتبط برسم بياني معيّن للتنقّل. (I2628d، b/188693123)
الإصدار 1.0.0-alpha06
2 حزيران (يونيو) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه عمليات التنفيذ.
تم تعديلها لتكون متوافقة مع إصدار Compose 1.0.0-beta08
.
الإصدار 1.0.0-alpha05
18 أيار (مايو) 2021
تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على هذه عمليات التنفيذ.
الميزات الجديدة
- تم تعديلها لتكون متوافقة مع إصدار Compose
1.0.0-beta07
.
إصلاح الأخطاء
- يمكن الاطلاع على ملفات 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 من مراحل النشاط
24 آذار (مارس) 2021
تم طرح androidx.lifecycle:lifecycle-*:2.3.1
. يحتوي الإصدار 2.3.1 على هذه الالتزامات.
إصلاح الأخطاء
- يمكن الآن استخدام قاعدة Lint
NonNullableMutableLiveData
بشكل صحيح التمييز بين متغيرات الحقل ذات قابلية القيم الفارغة المختلفة. (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
التي ستنتقل إليها دورة الحياة بعدEvent
مباشرةً. withStateAtLeast
: تمت إضافة واجهات برمجة تطبيقاتLifecycle.withStateAtLeast
التي تنتظر مراحل النشاط وتشغِّل مجموعة غير معلّقة من الرموز بشكل متزامن عند تغيير الحالة، ثم تُستأنف مع النتيجة. تختلف واجهات برمجة التطبيقات هذه عن طُرقwhen*
الحالية لأنّها لا تسمح بتشغيل رمز التعليق ولا تستخدم مُرسِلاً مخصّصًا. (aosp/1326081)- واجهات برمجة تطبيقات
ViewTree
: تتيح لك واجهة برمجة التطبيقاتViewTreeLifecycleOwner.get(View)
وViewTreeViewModelStoreOwner.get(View)
الجديدة استردادLifecycleOwner
وViewModelStoreOwner
اللذين يحتويان على ذلك، على التوالي، في ما يتعلّق بمثيلView
. يجب الترقية إلى النشاط1.2.0
وFragment1.3.0
وAppCompat 1.3.0-alpha01 أو إصدار أحدث لتعبئة هذه البيانات بشكل صحيح. تتوفّر الإضافتانfindViewTreeLifecycleOwner
وfindViewTreeViewModelStoreOwner
بلغة Kotlin في اللغةlifecycle-runtime-ktx
وlifecycle-viewmodel-ktx
على التوالي. - إيقاف إضافة
LiveData.observe()
Kotlin نهائيًا: تم إيقاف إضافةLiveData.observe()
Kotlin اللازمة لاستخدام بنية lambda نهائيًا لأنها ليست ضرورية عند استخدام الإصدار 1.4 من Kotlin.
الإصدار 2.3.0-rc01
16 كانون الأول (ديسمبر) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-rc01
. يحتوي الإصدار 2.3.0-rc01 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- أصبحت الطريقة
keys()
لـSavedStateHandle
متسقة الآن قبل حفظ الحالة وبعدها، وأصبحت الآن تتضمّن المفاتيح التي تم استخدامها سابقًا معsetSavedStateProvider()
بالإضافة إلى المفاتيح المستخدَمة معset()
وgetLiveData()
. (aosp/1517919، b/174713653)
مساهمة خارجية
- أصبحت الآن واجهات برمجة التطبيقات لتعليق الكوروتينات المدرِكة لمراحل نشاط الحياة تعالج بشكل أفضل طلبات البيانات إلى
yield()
. شكرًا نيكلاس أنسمان جيرتز. (aosp/1430830، b/168777346)
الإصدار 2.3.0-beta01
1 تشرين الأول (أكتوبر) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-beta01
. يحتوي الإصدار 2.3.0-beta01 على هذه الالتزامات.
التغييرات في واجهة برمجة التطبيقات
- إضافة
LiveData.observe()
Kotlin اللازمة لاستخدام بناء جملة lambda لأنها ليس ضروريًا عند استخدام Kotlin 1.4. (I40d3f)
إصلاح الأخطاء
- عليك ترقية androidx لاستخدام Kotlin 1.4 (Id6471 وb/165307851 وb/165300826)
التغييرات التي تطرأ على المستندات
- تم تعديل أداة إنشاء
liveData
ومستنداتasLiveData()
لتضمين تفاصيل حول تغيير قيم المهلة المحددة. (aosp/1122324)
الإصدار 2.3.0-alpha07
19 آب (أغسطس) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha07
. يحتوي الإصدار 2.3.0-alpha07 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح مشكلة تعطُّل في فحص أداة Lint في
NullSafeMutableLiveData
. (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
التي ستنتقل إليها دورة الحياة بعد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 عند استخدام Android Studio 4.1 Canary 6 أو إصدار أحدث. (aosp/1331903)
الإصدار 2.3.0-alpha04
10 حزيران (يونيو) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha04
. يحتوي الإصدار 2.3.0-alpha04 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح عطل في فحص أداة Lint في
NonNullableMutableLiveData
. (b/157294666) - تشمل عملية فحص Lint
NonNullableMutableLiveData
الآن عددًا أكبر بكثير من الحالات التي تم فيها ضبط قيمة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
. يجب الترقية إلى النشاط1.2.0-alpha05
والسمة1.3.0-alpha05
وAppCompat1.3.0-alpha01
لتعبئة هذه البيانات بشكل صحيح. تم إدراج إضافةfindViewModelStoreOwner()
Kotlin فيlifecycle-viewmodel-ktx
. (aosp/1295522)
إصلاح الأخطاء
- تم إصلاح مشكلة تسبّبت في نشر عمليات تحقق
MutableLiveData
من أداة Lint التي تم إصدارها في رحلة المستخدم2.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
لتعبئة هذه البيانات بشكل صحيح. تتوفر إضافةfindViewTreeLifecycleOwner
Kotlin فيlifecycle-runtime-ktx
. (aosp/1182361، aosp/1182956) - تمت إضافة عملية فحص Lint جديدة تحذّرك عند ضبط قيمة
null
فيMutableLiveData
تم تحديدها في Kotlin على أنّها غير خالية. تتوفّر هذه الميزة عند استخدام العنصرlivedata-core-ktx
أوlivedata-ktx
. (aosp/1154723 وaosp/1159092) - تتوفّر عناصر
lifecycle-runtime-testing
جديدة توفّرTestLifecycleOwner
لتنفيذLifecycleOwner
وتوفرLifecycle
قابل للتغيير بشكل آمن في سلسلة المحادثات. (aosp/1242438)
إصلاح الأخطاء
- أصبح للعنصر
lifecycle-runtime
اسم حزمة فريد. (aosp/1187196)
الإصدار 2.2.0
الإصدار 2.2.0 من ViewModel-Savedstate
5 شباط (فبراير) 2020
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0
. يحتوي الإصدار 2.2.0 على عمليات الالتزام هذه.
تشارك ميزة Lifecycle ViewViewState الآن النسخة نفسها التي تستخدمها عناصر دورة الحياة الأخرى. سلوك 2.2.0
مماثل لسلوك 1.0.0
.
الإصدار 2.2.0
22 كانون الثاني (يناير) 2020
تم طرح androidx.lifecycle:lifecycle-*:2.2.0
. يحتوي الإصدار 2.2.0 على عمليات الالتزام هذه.
تغييرات مهمة منذ الإصدار 2.1.0
- دمج الكوروتينات في دورة الحياة: تضيف عناصر
lifecycle-runtime-ktx
الجديدة تكاملاً بين الكوروتينات في Lifecycle وKotlin. تم أيضًا توسيعlifecycle-livedata-ktx
للاستفادة من الكوروتينات. لمعرفة مزيد من التفاصيل، يمكنك الاطّلاع على استخدام الكوروتينات في لغة Kotlin مع المكونات الهندسية. - إيقاف
ViewModelProviders.of()
نهائيًا: تم إيقافViewModelProviders.of()
نهائيًا. يمكنك تمريرFragment
أوFragmentActivity
إلى الدالة الإنشائية الجديدةViewModelProvider(ViewModelStoreOwner)
لتحقيق الوظيفة نفسها عند استخدام السمة1.2.0
. - إيقاف
lifecycle-extensions
نهائيًا: بسبب الإيقاف النهائي لـViewModelProviders.of()
أعلاه، يشير هذا الإصدار إلى إيقاف آخر واجهة برمجة تطبيقات نهائيًا فيlifecycle-extensions
، ومن المفترض أن يتم الآن اعتبار هذه العناصر متوقّفة نهائيًا. ننصحك بشدة بالاعتماد على عناصر مراحل النشاط المحدّدة التي تحتاج إليها (مثلlifecycle-service
في حال استخدامLifecycleService
وlifecycle-process
إذا كنت تستخدمProcessLifecycleOwner
) بدلاً منlifecycle-extensions
لأنّه لن يتم طرح إصدار2.3.0
في المستقبل منlifecycle-extensions
. - معالج التعليقات التوضيحية التزايدية في Gradle: يكون معالج التعليقات التوضيحية في مراحل النشاط متزايدًا بشكل تلقائي.
إذا كان تطبيقك مكتوبًا بلغة البرمجة 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 على مراجعة عملية التنفيذ المضمّنة.
التغييرات في التبعية
- تعتمد إضافات مراحل النشاط الآن على الجزء
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 على هذه الالتزامات.
إصلاح الأخطاء
- تم إصلاح الانحدار الذي تم تقديمه في رحلة في الإصدار 2.2.0-alpha05 بترتيب
ProcessLifecycleOwner
بدءًا منLifecycleOwner
بالنسبة إلى النشاط بدءًا من تاريخ البدء واستئنافه على أجهزة Android 10. (aosp/1128132) - تم إصلاح الانحدار الذي تم تقديمه في دورة الحياة
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 على هذه عمليات التنفيذ.
إصلاح الأخطاء
- تم إصلاح شرط السباق في أداة إنشاء البيانات المباشرة للكوروتين. b/140249349
الإصدار 2.2.0-alpha04
5 أيلول (سبتمبر) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha04
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- يستخدم
lifecycleScope
وwhenCreated
وwhenStarted
وwhenResumed
وviewModelScope
والتنفيذ الأساسي لـliveData
الآنDispatchers.Main.immediate
بدلاً منDispatchers.Main
. (b/139740492)
المساهمات الخارجية
- نشكر "نيكلاس أنسمان" على المساهمة في الانتقال إلى
Dispatchers.Main.immediate
. (aosp/1106073)
الإصدار 2.2.0-alpha03
7 آب (أغسطس) 2019
تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha03
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- يمكن الآن تنفيذ
ViewModelStoreOwner
بشكل اختياري تنفيذHasDefaultViewModelProviderFactory
لتوفيرViewModelProvider.Factory
تلقائيًا. وقد تم ذلك في النشاط1.1.0-alpha02
والجزء1.2.0-alpha02
والتنقل2.2.0-alpha01
. (aosp/1092370، b/135716331)
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف
ViewModelProviders.of()
نهائيًا. ويمكنك تمريرFragment
أوFragmentActivity
إلى الدالة الإنشائية الجديدة لـViewModelProvider(ViewModelStoreOwner)
لتحقيق الوظيفة نفسها. (aosp/1009889)
الإصدار 2.2.0-alpha02
2 تموز (يوليو) 2019
تم طرح androidx.lifecycle:*:2.2.0-alpha02
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
التغييرات في واجهة برمجة التطبيقات
- تم استبدال
LiveDataScope.initialValue
بـLiveDataScope.latestValue
الذي سيتتبّع القيمة الحالية المنبعثة من مجموعةliveData
. - تمت إضافة حمل زائد جديد إلى أداة إنشاء
liveData
التي تتلقّى مَعلمةtimeout
من النوعDuration
.
الإصدار 2.2.0-alpha01
7 أيار (مايو) 2019
تم طرح androidx.lifecycle:*:2.2.0-alpha01
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- يضيف هذا الإصدار ميزات جديدة تُتيح استخدام الكوروتينات في لغة Kotlin في دورة حياة كل من Lifecycle وLiveData. يمكنك العثور على مستندات مفصّلة حول هذه السياسات هنا.
الإصدار 1.0.0 من ViewModel-SavedState
الإصدار 1.0.0
22 كانون الثاني (يناير) 2020
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0
. يحتوي الإصدار 1.0.0 على عمليات التنفيذ هذه.
ميزات مهمة في الإصدار 1.0.0
- تمت إضافة فئة SavedStateHandle جديدة. يتيح هذا الإجراء لصفوف "
ViewModel
" الوصول إلى الحالة المحفوظة والمساهمة فيها. يمكن استلام هذا الكائن في الدالة الإنشائية لفئةViewModel
والمصانع التي توفّرها شركة Fragments بشكل تلقائي، وسيعمل AppCompatActivity على إدخال "SavedStateHandle
" تلقائيًا. - تمت إضافة AbstractSavedStateViewModelfactor. تتيح لك هذه الميزة إنشاء مصانع مخصّصة لجهاز
ViewModel
ومنحها إذن الوصول إلى "SavedStateHandle
".
ViewModel-Savedstate الإصدار 1.0.0-rc03
4 كانون الأول (ديسمبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03
. يحتوي الإصدار 1.0.0-rc03 على هذه عمليات التنفيذ.
التغييرات في التبعية
- يعتمد عرض النموذج المحفوظ لدورة الحياة الآن على "دورة الحياة"
2.2.0-rc03
.
Viewmodel-Savedstate الإصدار 1.0.0-rc02
7 تشرين الثاني (نوفمبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02
. يحتوي الإصدار 1.0.0-rc02 على عمليات التنفيذ هذه.
التغييرات في التبعية
- يعتمد الآن على دورة الحياة
2.2.0-rc02
.
ViewModel-SavedState الإصدار 1.0.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01
بدون أي تغييرات من 1.0.0-beta01
. يحتوي الإصدار 1.0.0-rc01 على عمليات التنفيذ هذه.
ViewModel-Savedstate الإصدار 1.0.0-beta01
9 تشرين الأول (أكتوبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة كانت نتيجة الوصول إلى نموذج ViewState View للمرة الأولى في
Activity.onActivityResult()
سيؤدي إلىIllegalStateException
. (b/139093676) - تم إصلاح
IllegalStateException
عند استخدامAbstractSavedStateViewModelFactory
. (b/141225984)
ViewModel-SavedState الإصدار 1.0.0-alpha05
18 أيلول (سبتمبر) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05
. يحتوي الإصدار 1.0.0-alpha05 على عمليات التنفيذ هذه.
التغييرات في واجهة برمجة التطبيقات
- لم تعد
SavedStateViewModelFactory
توسِّع نطاقAbstractSavedStateViewModelFactory
، ولا يتم إنشاءSavedStateHandle
إلا لنماذج ViewModels التي طلبت الحصول عليها (aosp/1113593).
ViewModel-SavedState الإصدار 1.0.0-alpha03
7 آب (أغسطس) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
تغييرات قد تؤدي إلى أعطال
- لم تعُد الدالة
lifecycle-viewmodel-savedstate
تعتمد علىfragment
، وتمت إزالة دالتَي الإنشاءSavedStateViewModelFactory(Fragment)
وSavedStateViewModelFactory(FragmentActivity)
المرتبطتين. وبدلاً من ذلك، أصبحSavedStateViewModelFactory
هو المصنع التلقائي لكلّ من النشاط1.1.0-alpha02
والقسم1.2.0-alpha02
والتنقّل2.2.0-alpha01
. (b/135716331)
الإصدار ViewModel-SavedState 1.0.0-alpha02
2 تموز (يوليو) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- تمت إضافة حِمل زائد
SavedStateHandle.getLiveData()
يقبل قيمة تلقائية.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية "
SavedStateVMFactory
" إلى "SavedStateViewModelFactory
". - تمت إعادة تسمية "
AbstractSavedStateVMFactory
" إلى "AbstractSavedStateViewModelFactory
".
ViewModel-Savedstate الإصدار 1.0.0-alpha01
13 آذار (مارس) 2019
تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01
. يمكن العثور على سجلّ التنفيذ الكامل لهذا الإصدار الأولي هنا.
الميزات الجديدة
- الآن يمكن لـ
ViewModels
المساهمة في الدالة savedstate. لتنفيذ ذلك، يمكنك استخدام المصنعSavedStateVMFactory
الذي تم طرحه حديثًا لنموذج العرض، ويجب أن يحتوي ViewModel على دالة إنشاء تستقبلSavedStateHandle
كائن كمَعلمة.
الإصدار
تغييرات مهمة منذ الإصدار 2.0.0
- تمت إضافة
LifecycleEventObserver
للحالات التي تحتاج فيها إلى بث الأحداث في مراحل النشاط. وهي واجهة برمجة تطبيقات عامة بدلاً من فئةGenericLifecycleObserver
مخفية. - تمت إضافة إضافات ktx لـ
LiveData.observe
طريقة وTransformations.*
طريقة. - تمت إضافة
Transformations.distinctUntilChanged
، ما يؤدي إلى إنشاء كائن LiveData جديد لا يُصدر قيمة إلى أن يتم تغيير قيمةLiveData
المصدر. - تمت إضافة دعم الكوروتين في ViewModels من خلال إضافة خاصية الإضافة
ViewModel.viewModelScope
.
الإصدار
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
، وهو مصنع لنماذج ViewViews التي تتلقىkey
وClass
بطريقةcreate
.
الإصدار 2.0.0
الإصدار 2.0.0
21 أيلول (سبتمبر) 2018
تم إطلاق دورة الحياة 2.0.0
مع إصلاح أخطاء واحدة من 2.0.0-rc01
في ViewModel.
إصلاح الأخطاء
- تم إصلاح قاعدة ViewModel Proguard التي أزالت التركيبات الإنشائية بشكلٍ غير صحيح b/112230489
الإصدار 2.0.0-beta01
2 تموز (يوليو) 2018
إصلاح الأخطاء
- تم إصلاح قاعدة Proguard لـ LifecycleObserver للاحتفاظ بعمليات التنفيذ فقط، وليس الواجهات الفرعية b/71389427
- تم إصلاح قواعد حماية ViewModel للسماح بالتشويش والتقليص.
إصدارات ما قبل AndroidX
بالنسبة إلى الإصدارات التي تسبق 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
، كما هو الحال مع عملية الترحيل.
الإصدار 1.1.0
22 كانون الثاني (يناير) 2018
التغييرات في الحزمة
تتوفر الآن تبعيات جديدة أصغر بكثير:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
التغييرات في واجهة برمجة التطبيقات
- تمت الآن إزالة خدمتَي
LifecycleActivity
وLifecycleFragment
المتوقفتَين نهائيًا - يُرجى استخدامFragmentActivity
أوAppCompatActivity
أو دعمFragment
. - تمت إضافة
@NonNull
تعليق توضيحي إلىViewModelProviders
وViewModelStores
. - تم إيقاف الدالة الإنشائية
ViewModelProviders
نهائيًا - يُرجى استخدام طرقها الثابتة مباشرةً - تم إيقاف
ViewModelProviders.DefaultFactory
نهائيًا - يُرجى استخدامViewModelProvider.AndroidViewModelFactory
- تمّت إضافة طريقة
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
الثابتة لاسترداد قيمةFactory
ثابتة مناسبة لإنشاء مثيلViewModel
وAndroidViewModel
.