مراحل النشاط
يسرد هذا الجدول جميع العناصر في المجموعة androidx.lifecycle.
| العناصر | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| lifecycle-* | 2.11.0 | - | - | 2.12.0-alpha04 |
| lifecycle-viewmodel-navigation3 | 2.11.0 | - | - | 2.12.0-alpha04 |
تحديد الاعتماديات
لإضافة اعتمادية على Lifecycle، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Kotlin
Groovy
dependencies { def lifecycle_version = "2.11.0" 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.12.0-alpha04" // 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.11.0" 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.12.0-alpha04") // 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.11.0" 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.11.0" 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.12
الإصدار 2.12.0-alpha04
23 سبتمبر 2026
تم طرح androidx.lifecycle:lifecycle-*:2.12.0-alpha04. يتضمّن الإصدار 2.12.0-alpha04 هذه التعديلات.
الإصدار 2.12.0-alpha03
9 سبتمبر 2026
تم طرح androidx.lifecycle:lifecycle-*:2.12.0-alpha03. يتضمّن الإصدار 2.12.0-alpha03 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل
compileSdkلمكتبات Compose إلى الإصدار 37.1. سيتطلّب ذلك تعديلcompileSdkبشكل متعدٍّ لجميع التطبيقات والمكتبات التي تستخدم Compose. (I05b0f)
الإصدار 2.12.0-alpha02
26 أغسطس 2026
تم طرح androidx.lifecycle:lifecycle-*:2.12.0-alpha02. يتضمّن الإصدار 2.12.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تم إيقاف
AutoRecreatedوrunOnNextRecreationنهائيًا واستبدالهما بـSavedStateProviderوSavedStateRestorer. (Iadc00)
الإصدار 2.12.0-alpha01
12 أغسطس 2026
تم طرح androidx.lifecycle:lifecycle-*:2.12.0-alpha01. يتضمّن الإصدار 2.12.0-alpha01 هذه التعديلات.
إصلاح الأخطاء
- إيقاف
lifecycle-compilerمعالج التعليقات التوضيحية نهائيًا يُرجى نقل البيانات إلىDefaultLifecycleObserverأوLifecycleEventObserverبدلاً من استخدام معالج التعليقات التوضيحية. (Ibf571، b/541926513) - تعمل الدالتان
SavedStateViewModelFactoryوAbstractSavedStateViewModelFactoryالآن على إيقاف التنفيذ فورًا في حال عدم تنفيذSavedStateRegistryOwnerللدالةViewModelStoreOwner، ما يمنع حدوث أعطال متأخرة أثناء إعادة إنشاء المكوّن. (Icf317) - إضافة تتبُّع النظام إلى عمليات إرسال أحداث
LifecycleRegistry(Ie1f92، b/112161409)
الإصدار 2.11
الإصدار 2.11.0
17 يونيو 2026
تم طرح androidx.lifecycle:lifecycle-*:2.11.0. يتضمّن الإصدار 2.11.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.10.0:
نطاق ViewModels في Compose: تقديم ViewModelStoreProvider وrememberViewModelStoreProvider وrememberViewModelStoreOwner لربط ViewModels بنطاقات واجهة مستخدم محدّدة (مثل صفحات Pager). وتظل هذه العناصر متاحة عند إجراء تغييرات في الإعدادات، ويتم محوها تلقائيًا عند إزالة الدالة المركّبة من التسلسل الهرمي.
توافق Kotlin Multiplatform: يتوافق الإصداران ViewModel-Compose وViewModel-Navigation3 الآن مع جميع أهداف Kotlin Multiplatform.
عملية دمج Navigation3: يقبل الإصدار ViewModelStoreNavEntryDecorator الآن ViewModelStoreOwner لنشر CreationExtras والمصانع إلى ViewModels المتداخلة. يمكنك أيضًا رفع مستوى مقدّمي الخدمات باستخدام عملية التحميل الزائد الجديدة rememberViewModelStoreNavEntryDecorator لإتاحة عدة حِزم سابقة. تم إيقاف removeViewModelStoreOnPop نهائيًا.
أدوات مساعدة خاصة بدورة الحياة: تمت إضافة إضافة ViewModelProvider.get<VM>(key) مجسّمة، وLifecycle.addObserver مستندة إلى تعبير لامدا، وإضافات المصنع التلقائية لـ ViewModelStoreOwner. تمت إضافة التعليق التوضيحي @EmptySuper إلى ViewModel.onCleared.
تغييرات أخرى: أصبح استخدام واجهة المستخدم 1.7.0+ في Compose مطلوبًا في LocalLifecycleOwner لإزالة عمليات الرجوع الاحتياطية المستندة إلى الانعكاس. تتطلّب تحديثات Compose compileSdk توفُّر الإصدار 9.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى.
الإصدار 2.11.0-rc01
3 يونيو 2026
تم طرح androidx.lifecycle:lifecycle-*:2.11.0-rc01. يتضمّن الإصدار 2.11.0-rc01 هذه التعديلات.
الإصدار 2.11.0-beta02
19 مايو 2026
تم طرح androidx.lifecycle:lifecycle-*:2.11.0-beta02. يتضمّن الإصدار 2.11.0-beta02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أضِف حمولة زائدة
rememberViewModelStoreNavEntryDecoratorتقبلViewModelStoreProvider. يتيح ذلك للمطوّرين نقل مقدّم الخدمة إلى أعلى نطاق التركيب الخاص بأداة التزيين، ما يتيح حالات استخدام مثل إتاحة عدة حِزم سابقة حيث يكون الإدخال نفسه متوفّرًا في كليهما ولكنّه يتطلّب حالة منفصلة. (Ibbbfe، b/503420425) - منع إزالة
ViewModelsالمشتركة قبل الأوان عند إزالة موفّر عنصر تابع من التركيب (Ib321a)
إصلاح الأخطاء
- يجب استخدام الإصدار 1.7.0 أو إصدار أحدث من واجهة مستخدم Compose لاستخدام
LocalLifecycleOwner. يؤدي ذلك إلى إزالة عمليات الرجوع الاحتياطية الداخلية، ما يحسّن الأداء ولكنّه يفرض ترقية صارمة للتبعيات على العملاء. (I48e65) - منع تكرار الرموز مع الإصدارات القديمة من JetBrains fork عند الترقية إلى الإصدار 1.11.0 من Compose Multiplatform (Iccd64)
- تم إصلاح مشكلة محو
ViewModelsبشكل غير صحيح أثناء إعادة التركيب عند استخدامrememberViewModelStoreProviderمع مَعلمات تلقائية غير ثابتة. لا يعيد الموفّر إنشاء المفتاح إلا عندما يتغيّر المالك الأصلي أو المفتاح الصريح. (Ibe296، b/501792448)
الإصدار 2.11.0-beta01
22 أبريل 2026
تم طرح androidx.lifecycle:lifecycle-*:2.11.0-beta01. يتضمّن الإصدار 2.11.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تقسيم
rememberViewModelStoreOwnerوrememberViewModelStoreProviderإلى دالتَين منفصلتَين لحالات الاستخدام مع مفتاح وبدونه (Ifd154، b/500802788)
إصلاح الأخطاء
- تم تعديل Compose
compileSdkإلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب استخدام الإصدار 9.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" على الأقل عند استخدام Compose. (Id45cd، b/413674743)
الإصدار 2.11.0-alpha03
25 مارس 2026
تم طرح androidx.lifecycle:lifecycle-*:2.11.0-alpha03. يتضمّن الإصدار 2.11.0-alpha03 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- اجعل
parentKeyمَعلمة اختيارية في دوال الإنشاءViewModelStoreProvider، مع ضبط القيمة التلقائية علىnull، ونقلها بعدparentStoreأوparentOwner. يؤدي ذلك إلى تبسيط عملية إنشاء مثيل عندما لا يكون مفتاح النطاق المشترَك مطلوبًا. (I66b67) - يقبل
ViewModelStoreNavEntryDecoratorالآنViewModelStoreOwnerبدلاً منViewModelStore. يتيح ذلك لـ Navigation3 نشرCreationExtrasوViewModelProvider.Factoryالتلقائيَين للعنصر الرئيسي إلى عناصر ViewModel المتداخلة، ما يضمن توفير التوافق مع التبعيات على مستوى التطبيق. (Ia6018، b/434651920) - عزل حالة
ViewModelStoreProviderباستخدام مفتاح فريد يمنع ذلك مقدّمي الخدمات المتشابهين من محو ViewModels الخاصة ببعضهم البعض عن غير قصد أثناء عملية الإتلاف. (I59c0b، b/434651920) - أضِف دالة إضافة
ViewModelProvider.get<VM>(key: String). يتيح ذلك للمطوّرين استرداد ViewModels بشكل أكثر سلاسة باستخدامkeyمخصّص مع مَعلمات نوع Kotlin reified، ما يزيل الحاجة إلى تمرير نوع الفئة بشكل صريح. (Ic1f59) - تمت إضافة إمكانية استخدام
defaultArgsفيViewModelStoreProviderللسماح بتهيئة ViewModels باستخدام قيمSavedStateالتلقائية. (I1e933، b/434651920، b/165642391) - إيقاف
removeViewModelStoreOnPopوViewModelStoreNavEntryDecoratorDefaultsالمرتبطَين به نهائيًا كانت واجهة برمجة التطبيقات هذه حلاً بديلاً لتغييرات الإعدادات، والتي يتم التعامل معها الآن داخليًا. يجب الآن محو جميع حالات أدوات التزيين، بما في ذلك ViewModels، في الوقت نفسه عند إغلاق النافذة. للحفاظ على حالة أداة الزخرفة خارج الوقت الذي يتم فيه تمرير سجلّ الأنشطة السابقة هذا إلى NavDisplay، استخدِم واجهة برمجة التطبيقاتrememberDecoratedNavEntries. (I852d9)
إصلاح الأخطاء
- أضِف
toString()إلىCreationExtras.Keyلعرض اسم الفئة. (I5de52)
الإصدار 2.11.0-alpha02
11 مارس 2026
تم طرح androidx.lifecycle:lifecycle-*:2.11.0-alpha02. يتضمّن الإصدار 2.11.0-alpha02 هذه التعديلات.
ViewModel ذات النطاق المحدود
يقدّم هذا الإصدار واجهات برمجة تطبيقات لإنشاء مثيلات
ViewModelStoreذات نطاق محدّد في Compose. يتيح ذلك ربطViewModelsبنطاقات محدّدة لواجهة المستخدم (مثل صفحاتPagerالفردية أو عناصرLazyList). تستمر هذهViewModelsحتى بعد إجراء تغييرات في الإعدادات، ويتم محوها تلقائيًا عند إزالة الدالة المركّبة المقابلة نهائيًا من التسلسل الهرمي.// Hoist the parent provider outside the Pager. val provider = rememberViewModelStoreProvider() val pagerState = rememberPagerState(pageCount = { 5 }) HorizontalPager(state = pagerState) { page -> // Create an owner scoped to the current page. val storeOwner = rememberViewModelStoreOwner(provider, key = page) // Provide the scoped owner to this composition. CompositionLocalProvider(LocalViewModelStoreOwner provides storeOwner) { // ViewModel is now scoped specifically to this page. val viewModel: PageViewModel = viewModel() } }
يُرجى العِلم أنّ ViewModelStoreProvider متاح خارج Compose ويمكن استخدامه مع الأنشطة و/أو الأجزاء و/أو طرق العرض.
الميزات الجديدة
- إضافة إمكانية استخدام جميع أهداف KMP إلى ViewModel Navigation3 (I60fa5)
- أضِف دوال مصنع لكل من
LifecycleOwnerوViewModelStoreOwnerوSavedStateRegistryOwnerلتقليل الرمز النموذجي عند إنشاء مكونات مالك مخصّصة. (I9682c) - أضِف دالة إضافة
Lifecycle.addObserverمستندة إلى lambda للسماح بمراقبة أحداث مراحل النشاط بدون إنشاء عنصر مجهول الهوية. (I94f38) - أضِف الإضافتَين
defaultViewModelProviderFactoryوdefaultViewModelCreationExtrasإلىViewModelStoreOwner. توفّر هذه الدوال إمكانية الوصول الآمن إلى القيم التلقائية بدون الحاجة إلى إجراء عمليات تحقّق يدوية من النوع مقابلHasDefaultViewModelProviderFactory. (Ifa83d)
التغييرات في واجهة برمجة التطبيقات
- أضِف
rememberViewModelStoreOwnerلإنشاءViewModelStoreOwners محدودة النطاق بسهولة في Compose. تعرض هذه الدالة مالكًا مرتبطًا بدورة حياة العنصر القابل للإنشاء، وتؤدي إلى محو ViewModels تلقائيًا عند إزالة العنصر القابل للإنشاء من واجهة المستخدم. (I2a15b، b/165642391) - أضِف
rememberViewModelStoreProviderللسماح بإنشاء مثيلاتViewModelStoreذات نطاق محدود في Compose. تربط هذه الدالة متجرًا فرعيًا بمالك رئيسي، ما يضمن بقاء ViewModels عند إجراء تغييرات في الإعدادات مع محوها تلقائيًا عند إزالة Composable من التسلسل الهرمي. (I0f57a، b/165642391) - أضِف
ViewModelStoreProviderلإدارة مثيلاتViewModelStoreذات النطاق المحدود. تتيح هذه الفئة إنشاء نطاقات فرعية تبقى بعد تغييرات الإعدادات ولكن يمكن محوها بشكل مستقل. توفّر أيضًا أغلفةViewModelStoreOwnerالتي تكتسب المصانع التلقائية وإضافات الإنشاء من العنصر الرئيسي. (I87f4f، b/434651920)
الإصدار 2.11.0-alpha01
25 فبراير 2026
تم طرح androidx.lifecycle:lifecycle-*:2.11.0-alpha01. يتضمّن الإصدار 2.11.0-alpha01 هذه التعديلات.
الميزات الجديدة
- إتاحة جميع أهداف Kotlin Multiplatform (KMP) في ViewModel-Compose فصل عملية تحديد المالك عن
LocalViewللسماح لمضيفي المنصات بتوفير قيمة تلقائيةViewModelStoreOwnerمع الحفاظ علىLocalViewكخيار احتياطي آمن على Android (I09fab، b/434940570، Ic8526، b/478146897)
التغييرات في واجهة برمجة التطبيقات
- أضِف عملية تنفيذ
toStringإلىViewModelStoreالتي تسرد جميع المفاتيح المخزّنة للمساعدة في تبسيط عملية تصحيح الأخطاء. (I0a6f4) - أضِف تنفيذًا تلقائيًا للسمة
HasDefaultViewModelProviderFactory.defaultViewModelProviderFactory، ما يعني أنّك لن تحتاج بعد الآن إلى إلغاء هذه السمة بشكلٍ صريح عند تنفيذ الواجهة. (Ia7095) - أضِف التعليق التوضيحي
ViewModel.onClearedمع@EmptySuperللإشارة بوضوح إلى أنّ الطرق البديلة لا تحتاج إلى استدعاءsuper.onCleared(). (I8c226)
الإصدار 2.10
الإصدار 2.10.0
19 نوفمبر 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0. يتضمّن الإصدار 2.10.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.9.0:
أضِف عنصر
rememberLifecycleOwnerقابلاً للإنشاء لتفعيل إنشاء دورات حياة محدودة النطاق مباشرةً داخل واجهة المستخدم. يكون ذلك مفيدًا للمكوّنات التي تحتاج إلى إدارة دورات حياتها بشكل مستقل، مثلHorizontalPagerالتي تريد جعل الصفحة الحاليةRESUMEDفقط أو المكتبات مثل Navigation3:@Composable fun MyComposable() { // This LifecycleOwner is automatically moved to DESTROYED when // it leaves composition and its maxLifecycle is the maximum of either // the maxLifecycle you set or the Lifecycle.State of the parentLifecycleOwner val lifecycleOwner = rememberLifecycleOwner( maxLifecycle = RESUMED, parentLifecycleOwner = LocalLifecycleOwner.current, ) CompositionLocalProvider(LocalLifecycleOwner provides lifecycleOwner) { val childLifecycleOwner = LocalLifecycleOwner.current } }يوفر العنصر
lifecycle-viewmodel-navigation3عملية دمج مُنشأة مسبقًا مع Navigation3، ما يتيح لك تفعيل نطاق مثيلاتViewModelلشاشات فردية ("إدخالات") باستخدام واجهة برمجة التطبيقاتrememberViewModelStoreNavEntryDecorator():@Composable fun MyComposable() { NavDisplay( backStack = backStack, entryDecorators = listOf( rememberSaveableStateHolderNavEntryDecorator(), // Add this line to automatically scope ViewModels to each entry rememberViewModelStoreNavEntryDecorator(), ), entryProvider = entryProvider { // Add your entries here } } }إضافة دالة مصنع أداة إنشاء للنوع
CreationExtras، ما يوفّر واجهة برمجة تطبيقات Kotlin أكثر ملاءمة ووضوحًاoverride val defaultViewModelCreationExtras: CreationExtras // Use the CreationExtras builder to add in a custom value to the default // CreationExtras in your Activity or Fragment get() = super.defaultViewModelCreationExtras + CreationExtras { this[CustomKey] = "customValue" }تمّت إضافة دعم مدمج للأنواع التي يمكن أن تقبل القيم الفارغة في
SavedStateHandle.saved، لتسهيل حفظ واستعادة الخصائص القابلة لأن تكون فارغة.وضع علامة
SavedStateHandleعلى الشركات المصنّعة باعتبارها@VisibleForTestingتم تغيير minSdk من المستوى 21 لواجهة برمجة التطبيقات إلى المستوى 23.
الإصدار 2.10.0-rc01
5 نوفمبر 2025
تم طرح androidx.lifecycle:lifecycle-*:2.10.0-rc01. يتضمّن الإصدار 2.10.0-rc01 هذه التعديلات.
الإصدار 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) - وضع علامة
SavedStateHandleعلى الشركات المصنّعة باعتبارها@VisibleForTesting(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الآن على أجهزة الكمبيوتر المكتبي التي تستخدم JVM وأجهزة Android.
التغييرات في السلوك
- الحالة
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 للحصول على التفاصيل.
الإصدار 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: أصبح الآن تفويض إضافة SavedStateHandle.saveable` متوافقًا مع القيم القابلة للتصغير. نشكر Roman Kalukiewicz على مساهمته. (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الآن على أجهزة الكمبيوتر المكتبي التي تستخدم JVM وأجهزة Android. (d3d0892) - خاصية الإضافة المضمّنة لعرض التطبيق الأساسي بأمان في الإصدار 2.0 من لغة Kotlin (I39df2)
إصلاح الأخطاء
- تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP) بالتحديث إلى الإصدار 8.1 أو الإصدارات الأحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (If6b4c، b/345472586)
الإصدار 2.8
الإصدار 2.8.7
30 أكتوبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.7. يتضمّن الإصدار 2.8.7 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- أصبحت
androidx.compose.ui.platform.LocalLifecycleOwnerمتاحة الآن في مجموعة رموز المصدر المشتركة (KMP). (6a3f5b3) lifecycle-runtime-compose: تمت إزالة عناصرdesktopوإضافة عناصر-jvmStubsو-linuxx64Stubs. لا يُفترض استخدام أي من هذه الاستهدافات، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose. (6a3f5b3)
الإصدار 2.8.6
18 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.6. يتضمّن الإصدار 2.8.6 هذه التعديلات.
إصلاح الأخطاء
- تم تحسين دعم عمليات التحويل الذكي في
NullSafeMutableLiveDataخطأ Lint، ما يتيح تجنُّب النتائج الموجبة الخاطئة. (85fed6، b/181042665)
تحديثات الاعتماديات
- يعتمد Lifecycle Runtime Compose الآن على Compose Runtime
1.7.1
الإصدار 2.8.5
4 سبتمبر 2024
تم طرح androidx.lifecycle:lifecycle-*:2.8.5. يتضمّن الإصدار 2.8.5 هذه التعديلات.
إصلاح الأخطاء
- عدِّل
androidx.lifecycle.ReportFragmentقواعد ProGuard للسماح بالتشويش . (ff898e1)
المساهمة الخارجية
- يمكن الآن استخدام قيم تقبل القيم الخالية في مفوّض إضافة
SavedStateHandle.saveable. نشكر Roman Kalukiewicz على مساهمته. (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) - يستخدم دمج
ViewModelمعsaveableباستخدام مفوّضي السمات الآن اسم الفئة كجزء من المفتاح الذي يتم إنشاؤه تلقائيًا، ما يمنع حدوث تعارضات إذا كانت فئات متعددة تستخدم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في بيئات Native وJVM 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
- تمت إعادة كتابة
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) - تستخدم "
ViewModel" الآنAutoCloseableبدلاً من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. - يحلّ هذا الإصدار مشكلة عدم استعادة
SavedStateHandleفئاتParcelableالمخصّصة بشكلٍ صحيح بعد إيقاف العملية نهائيًا وإعادة إنشائها. بسبب فقدان معلومات النوع من خلال إطار عمل 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)
إصلاح الأخطاء
- من Lifecycle
2.6.2: تم إصلاح مشكلة عدم استعادةSavedStateHandleبشكل صحيح بعد إيقاف العملية نهائيًا إذا تمت استعادة الحالة، وتم استدعاءsave()بدون حفظ الحالة فعليًا فيSavedStateRegistryالأصل، ثم تمت استعادة الحالة مرة أخرى. يحلّ هذا الخطأ مشكلة التفاعل بينrememberSaveableوNavHostفي Navigation Compose. (aosp/2729289)
الإصدار 2.7.0-alpha01
26 تموز (يوليو) 2023
تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha01. يتضمّن الإصدار 2.7.0-alpha01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- يمكن الآن مراقبة
Lifecycle.Stateفي Compose من خلالLifecycle.currentStateFlow، التي تعرضStateFlowحيث يكونvalueهوLifecycle.Stateالحالي. (Ib212d، b/209684871) - يمكن الآن مراقبة
Lifecycle.EventكـFlowمعLifecycle.asFlow().(If2c0f، b/176311030) - تمت إضافة واجهة برمجة التطبيقات
LifecycleResumeEffectلتشغيلSideEffects في Compose استنادًا إلى عمليات معاودة الاتصال بالحدثLifecycle.Event.ON_RESUMEوLifecycle.Event.ON_PAUSE. (I60386، b/235529345) - تمت إضافة واجهة برمجة التطبيقات
LifecycleStartEffectلتشغيلSideEffectCompose استنادًا إلى عمليات معاودة الاتصال بالحدثLifecycle.Event.ON_STARTوLifecycle.Event.ON_STOP. (I5a8d1، b/235529345) - تمت إضافة واجهة برمجة التطبيقات
LifecycleEventEffectلتشغيلSideEffectفي Compose استنادًا إلىLifecycle.Event. (Ic9794، b/235529345) - تمت إضافة الإضافة
Lifecycle.collectAsState()لعرضLifecycle.Stateمباشرةً على أنّهStateفي Compose. هذا الخيار مماثل (وبديل أقصر) للخيارlifecycle.currentStateFlow.collectAsState(). (I11015، b/235529345)
إصلاح الأخطاء
- يضبط الامتداد
LiveData.distinctUntilChanged()الآنvalueالخاص بـLiveDataالمعروض إذا تم ضبط قيمة علىLiveDataالسابق. لا يؤدي ذلك إلى تغيير سلوك المراقبة، إذ لن يتم تطبيق القيم المعدَّلة من المصدرLiveDataإلا بعد بدء مراقبةLiveDataالتي تم إرجاعها منdistinctUntilChanged(). (Ib482f) - تمت إزالة قواعد الاحتفاظ ببيانات Proguard المرتبطة بـ
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
يقدّم الجدول أدناه الإحالات الناجحة المصدر للإصدار الجديد من مراحل النشاط.
| Lifecycle 2.5 | Lifecycle 2.5 (KTX) | Lifecycle 2.6 |
|---|---|---|
Transformations.switchMap(liveData) {...} |
liveData.switchMap {...} |
liveData.switchMap {...} |
Transformations.map(liveData) {...} |
liveData.map {...} |
liveData.map {...} |
Transformations.distinctUntilChanged(liveData) {...} |
liveData.distinctUntilChanged{...} |
liveData.distinctUntilChanged{...} |
LiveDataReactiveStreams.fromPublisher(publisher) |
publisher.toLiveData() |
publisher.toLiveData() |
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) |
liveData.toPublisher(lifecycleOwner) |
liveData.toPublisher(lifecycleOwner) |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory |
override val defaultViewModelProviderFactory = factory |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras |
override val defaultViewModelProviderCreationExtras = extras |
ViewTreeLifecycleOwner.set(view, owner) |
ViewTreeLifecycleOwner.set(view, owner) |
view.setViewTreeLifecycleOwner(owner) |
ViewTreeLifecycleOwner.get(view) |
view.findViewTreeLifecycleOwner() |
view.findViewTreeLifecycleOwner() |
override fun getViewModelStore(): ViewModelStore = store |
override fun getViewModelStore(): ViewModelStore = store |
override val viewModelStore: ViewModelStore = store |
override fun getLifecycle(): Lifecycle = registry |
override fun getLifecycle(): Lifecycle = registry |
override val lifecycle: Lifecycle get() = registry |
- تتطابق الآن إمكانية قبول القيمة الخالية لطريقة
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، 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) - ستحتفظ الدالة
asLiveDataفيFlowLiveDataالآن بالقيمة الأولية لـStateFlowعند إنشاء الكائن الجديدLiveData. (I3f530، b/157380488) - من مراحل النشاط
2.5.1: تعمل عمليات التنفيذ المخصّصة لـAndroidViewModelFactoryالآن على استدعاء الدالةcreate(modelClass)بشكلٍ صحيح عند استخدام أداة الإنشاء ذات الحالة معLifecycle2.4 أو إصدار أحدث (I5b315، b/238011621)
الإصدار 2.6.0-alpha01
29 يونيو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha01. يتضمّن الإصدار 2.6.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تمت إضافة إضافة جديدة في
StateFlowوFlowمنcollectAsStateWithLifecycleتجمع البيانات من التدفقات وتمثّل أحدث قيمة لها كحالة Compose بطريقة تراعي مراحل النشاط. يتم جمع التدفق ويتم ضبط القيمة الجديدة على قيمة الحالة عندما تكون مدة النشاط فيLifecycle.Stateمعيّنة على الأقل. عندما تنخفض دورة الحياة إلى ما دونLifecycle.State، يتوقف جمع البيانات في التدفق ولا يتم تعديل قيمة الحالة. (I1856e، b/230557927)
الإصدار 2.5
الإصدار 2.5.1
27 يوليو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.1. يتضمّن الإصدار 2.5.1 هذه التعديلات.
إصلاح الأخطاء
- تستدعي عمليات التنفيذ المخصّصة لـ
AndroidViewModelFactoryالآن الدالةcreate(modelClass)بشكلٍ صحيح عند استخدام أداة إنشاءAndroidViewModelFactoryذات الحالة معLifecycle2.4 أو إصدار أحدث. (I5b315، b/238011621)
الإصدار 2.5.0
29 يونيو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0. يتضمّن الإصدار 2.5.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 2.4.0
توفّر
SavedStateHandleالآن واجهة برمجة تطبيقاتgetStateFlow()تعرض قيمةStateFlowفي Kotlin لرصد التغييرات في القيم كبديل لاستخدامLiveData.ViewModel CreationExtras: عند كتابة
ViewModelProvider.Factoryمخصّص، لم يعُد من الضروري توسيعAndroidViewModelFactoryأوAbstractSavedStateViewModelFactoryللوصول إلىApplicationأوSavedStateHandleعلى التوالي. بدلاً من ذلك، يتم توفير هذه الحقول لكل فئة فرعية منViewModelProvider.FactoryكـCreationExtrasمن خلال التحميل الزائد الجديد لـcreate:create(Class<T>, CreationExtras). يتم توفير هذه البيانات الإضافية تلقائيًا من خلال "النشاط" أو "الجزء" عند استخدام Activity1.5.0وFragment1.5.0على التوالي.class CustomFactory : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T { return when (modelClass) { HomeViewModel::class -> { // Get the Application object from extras val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]) // Pass it directly to HomeViewModel HomeViewModel(application) } DetailViewModel::class -> { // Create a SavedStateHandle for this ViewModel from extras val savedStateHandle = extras.createSavedStateHandle() DetailViewModel(savedStateHandle) } else -> throw IllegalArgumentException("Unknown class $modelClass") } as T } }توفّر
lifecycle-viewmodelالآنviewModelFactoryKotlin DSL التي تتيح لك تحديدViewModelProvider.Factoryمن حيث واحد أو أكثر من أدوات تهيئة lambda، واحدة لكل فئةViewModelمعيّنة تتوافق مع المصنع المخصّص، باستخدامCreationExtrasكمصدر البيانات الأساسي.val customFactory = viewModelFactory { // The return type of the lambda automatically sets what class this lambda handles initializer { // Get the Application object from extras provided to the lambda val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY)) HomeViewModel(application) } initializer { val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) } }توفّر
lifecycle-viewmodel-composeالآن واجهة برمجة تطبيقاتviewModel()تأخذ مصنع lambda لإنشاء مثيلViewModelبدون الحاجة إلى إنشاءViewModelProvider.Factoryمخصّص.// Within a @Composable, you can now skip writing a custom Factory // and instead write a lambda to do the initialization of your ViewModel val detailViewModel = viewModel { // This lambda is only called the first time the ViewModel is created // and all CreationExtras are available inside the lambda val savedStateHandle = createSavedStateHandle() DetailViewModel(savedStateHandle) }دمج أداة الحفظ في Compose مع SavedStateHandle: يحتوي العنصر
lifecycle-viewmodel-composeالآن على واجهات برمجة تطبيقات تجريبية جديدة فيSavedStateHandle.saveableتتيح سلوكًا مشابهًا لسلوكrememberSaveableيستند إلىSavedStateHandleفي `ViewModel`.class ListScreenViewModel(handle: SavedStateHandle): ViewModel() { // This value survives both configuration changes and process death and recreation val editMode by handle.saveable { mutableStateOf(false) } }تمت إضافة واجهة برمجة التطبيقات
addCloseable()وتحميل زائد جديد للمنشئ يسمح لك بإضافة عنصر واحد أو أكثر من عناصرCloseableإلىViewModelسيتم إغلاقه عند محوViewModelبدون الحاجة إلى أي عمل يدوي فيonCleared().على سبيل المثال، لإنشاء نطاق روتين مشترك يمكنك إدراجه في ViewModel، ولكن يمكنك التحكّم فيه من خلال الاختبار، يمكنك إنشاء
CoroutineScopeينفّذCloseable:class CloseableCoroutineScope( context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate ) : Closeable, CoroutineScope { override val coroutineContext: CoroutineContext = context override fun close() { coroutineContext.cancel() } }ويمكن استخدامها بعد ذلك في الدالة الإنشائية
ViewModelمع الحفاظ على مدة البقاء نفسها كما فيviewModelScope:class TestScopeViewModel( val customScope: CloseableCoroutineScope = CloseableCoroutineScope() ) : ViewModel(customScope) { // You can now use customScope in the same way as viewModelScope }
التغييرات في السلوك
- ستؤدي محاولة نقل
Lifecycle.StateمنINITIALIZEDإلىDESTROYEDدائمًا إلى طرحIllegalStateExceptionبغض النظر عما إذا كانLifecycleيتضمّن مراقبًا مرفقًا. - سيزيل
LifecycleRegistryالآن المراقبين عندما يصل إلى الحالةDESTROYED.
الإصدار 2.5.0-rc02
15 يونيو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-rc02. يتضمّن الإصدار 2.5.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- لن يتعطّل
ViewModelProviderبعد الآن عند دمج إصدارات سابقة من تبعيات compileOnly Lifecycle مع الإصدارات 2.5 والإصدارات الأحدث. (I81a66، b/230454566)
الإصدار 2.5.0-rc01
11 مايو 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-rc01. يتضمّن الإصدار 2.5.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تعرض الدالة
MediatorLiveData.addSource()الآن الخطأNullPointerExceptionعند تمرير مصدرnullإليها بدلاً من نشر مصدرnullإلى المراقبين.(Ibd0fb، b/123085232)
الإصدار 2.5.0-beta01
20 أبريل 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-beta01. يتضمّن الإصدار 2.5.0-beta01 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة مفوّضين لسمة
SavedStateHandle.saveableمن أجل استخدام أسماء السمات كمفاتيح لتخزين الحالة فيSavedStateHandle(I8bb86، b/225014345)
إصلاح الأخطاء
- تم إصلاح مشكلة كانت تؤدي إلى ظهور
IllegalStateExceptionعند استخدام حِزم سابقة متعددة، وذلك عند تضمينNavHostداخلNavHostأخرى في علامة تبويب غير أساسية في شريط التنقّل السفلي. (I11bd5، b/228865698)
الإصدار 2.5.0-alpha06
6 أبريل 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha06. يتضمّن الإصدار 2.5.0-alpha06 هذه التعديلات.
الميزات الجديدة
- إضافة عملية تحميل زائدة تجريبية
MutableStateإلىSavedStateHandle.saveableلتحقيق التكافؤ معrememberSaveable(I38cfe، b/224565154)
التغييرات في واجهة برمجة التطبيقات
- أصبحت
CreationExtrasالآن مجرّدة بدلاً من أن تكون محكمة الإغلاق. (Ib8a7a)
إصلاح الأخطاء
- تم إصلاح الخطأ
IllegalStateException: Already attached to lifecycleOwnerالناتج عنSavedStateHandleController. (I7ea47، b/215406268)
الإصدار 2.5.0-alpha05
23 مارس 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha05. يتضمّن الإصدار 2.5.0-alpha05 هذه التعديلات.
الميزات الجديدة
- يتوفّر في الوحدة
lifecycle-viewmodel-composeالآنSavedStateHandleSaver، وهي واجهة برمجة تطبيقات تجريبية تضمن دمج القيم فيSavedStateHandleبشكل صحيح مع حالة المثيل المحفوظة نفسها التي تستخدمهاrememberSaveable. (Ia88b7، b/195689777)
التغييرات في واجهة برمجة التطبيقات
- تم إصلاح مشكلة التوافق مع الإصدار 2.3 والإصدارات الأحدث من Lifecycle في Java. (I52c8a، b/219545060)
إصلاح الأخطاء
- يتيح
SavedStateViewFactoryالآن استخدامCreationExtrasحتى عند تهيئته باستخدامSavedStateRegistryOwner. في حال توفير عناصر إضافية، سيتم تجاهل الوسيطات التي تمّت تهيئتها. (I6c43b، b/224844583)
الإصدار 2.5.0-alpha04
9 مارس 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha04. يتضمّن الإصدار 2.5.0-alpha04 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- توفّر
SavedStateHandleالآن واجهة برمجة تطبيقاتgetStateFlow()تعرض KotlinStateFlowلرصد التغييرات في القيم كبديل لاستخدامLiveData. (Iad3ab، b/178037961)
الإصدار 2.5.0-alpha03
23 فبراير 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha03. يتضمّن الإصدار 2.5.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهة برمجة التطبيقات
addCloseable()ورمز تحميل زائد جديد للدالة الإنشائية يتيح لك إضافة عنصر واحد أو أكثر من عناصرCloseableإلىViewModelسيتم إغلاقه عند محوViewModelبدون الحاجة إلى أي عمل يدوي فيonCleared(). (I55ea0) - توفّر
lifecycle-viewmodelالآنInitializerViewModelFactoryتتيح لك إضافة تعبير lambda لمعالجة فئاتViewModelمعيّنة، باستخدامCreationExtrasكمصدر البيانات الأساسي. (If58fc، b/216687549) - توفّر
lifecycle-viewmodel-composeالآن واجهة برمجة تطبيقاتviewModel()تأخذ مصنع lambda لإنشاء مثيلViewModelبدون الحاجة إلى إنشاءViewModelProvider.Factoryمخصّص. (I97fbb، b/216688927)
التغييرات في واجهة برمجة التطبيقات
- يمكنك الآن إنشاء
ViewModelباستخدامCreationExtrasمن خلالlifecycle-viewmodel-compose. (I08887، b/216688927)
تغييرات السلوك
- ستؤدي محاولة نقل
Lifecycle.StateمنINITIALIZEDإلىDESTROYEDالآن دائمًا إلى طرحIllegalStateExceptionبغض النظر عما إذا كانLifecycleيتضمّن مراقبًا مرفقًا. (I7c390، b/177924329) - سيزيل
LifecycleRegistryالآن المراقبين عندما يصل إلى حالةDESTROYED. (I4f8dd، b/142925860)
الإصدار 2.5.0-alpha02
9 فبراير 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha02. يتضمّن الإصدار 2.5.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تم تحويل
SavedStateHandleوSavedStateViewModelFactoryإلى Kotlin. وقد أدّى ذلك إلى تحسين إمكانية قبول القيم الفارغة في الأنواع العامة في كلتا الفئتين. (Ib6ce2، b/216168263، I9647a، b/177667711) - يمكن أن تتضمّن مَعلمة الدالة
LiveDataswitchMapالآن قيمة ناتجة تقبل القيم الخالية. (I40396، b/132923666) - تمت الآن إضافة التعليق التوضيحي
@CheckResultإلى إضافاتLiveData-ktx لفرض استخدام النتيجة عند استدعاء هذه الدوال. (Ia0f05، b/207325134)
التغييرات في السلوك
- تعمل السمة
SavedStateHandleالآن على تخزين defaultValue بشكل صحيح عندما لا تتوفّر قيمة للمفتاح المحدّد. (I1c6ce، b/178510877)
إصلاح الأخطاء
- من Lifecycle
2.4.1: تم تعديلlifecycle-processليعتمد على Startup 1.1.1 لضمان توفّر الإصلاحات التي تمنعProcessLifecycleInitializerمن عرضStartupExceptionتلقائيًا. (Ib01df، b/216490724) - تتوفّر الآن رسالة خطأ محسّنة عند ترتيب المَعلمات بشكل غير صحيح في فئات
AndroidViewModelالمخصّصة ومحاولة إنشاءViewModel. (I340f7، b/177667711) - يمكنك الآن إنشاء نموذج عرض من خلال
CreationExtrasباستخدامAndroidViewModelFactoryبدون ضبط تطبيق. (I6ebef، b/217271656)
الإصدار 2.5.0-alpha01
26 يناير 2022
تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha01. يتضمّن الإصدار 2.5.0-alpha01 هذه التعديلات.
ViewModel CreationExtras
من خلال هذا الإصدار، نضع الأساس لإعادة هيكلة طريقة إنشاء ViewModel. بدلاً من مجموعة ثابتة من الفئات الفرعية من ViewModelProvider.Factory التي تضيف كلّ منها وظائف إضافية (ما يسمح بمَعلمة الدالة الإنشائية Application من خلال AndroidViewModelFactory، ومَعلمة الدالة الإنشائية SavedStateHandle من خلال SavedStateViewModelFactory وAbstractSavedStateViewModelFactory، وما إلى ذلك)، نحن بصدد الانتقال إلى عالم من الدوال الإنشائية عديمة الحالة التي تعتمد على مفهوم جديد، وهو CreationExtras. (Ia7343 وb/188691010 وb/188541057)
بعد تطبيق هذا التغيير، لن يعود ViewModelProvider يجري مكالمات مباشرة في طريقة create(Class<T>) السابقة لـ ViewModelProvider.Factory. بدلاً من ذلك، يتم استدعاء حمل زائد جديد من create: create(Class<T>, CreationExtras). يعني ذلك أنّ أي عملية تنفيذ مباشرة لمثيل ViewModelProvider.Factory يمكنها الآن الوصول إلى كلّ من CreationExtras الجديدة التالية:
-
ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: يتيحStringالوصول إلى المفتاح المخصّص الذي تم تمريره إلىViewModelProvider.get(). - يمنح
ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEYإذن الوصول إلى الصفApplication. - توفّر
SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEYإمكانية الوصول إلىSavedStateRegistryOwnerالمستخدَم لإنشاء هذا ViewModel. - توفّر
SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEYإمكانية الوصول إلىViewModelStoreOwnerالمستخدَم لإنشاء هذا ViewModel. - توفّر الدالة
SavedStateHandleSupport.DEFAULT_ARGS_KEYإمكانية الوصول إلىBundleمن الوسيطات التي يجب استخدامها لإنشاءSavedStateHandle.
يتم توفير هذه الإضافات تلقائيًا عند استخدام نشاط 1.5.0-alpha01 و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 هذه التعديلات.
إصلاح الأخطاء
- تم نقل الإصلاح من مكوّن Lifecycle
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، وهي واجهة برمجة تطبيقات تنفّذ مجموعة من الرموز البرمجية في روتين فرعي عندما تكون Lifecycle في حالة معيّنة على الأقل. سيتم إلغاء الكتلة وإعادة تشغيلها مع انتقال دورة الحياة إلى الحالة المستهدَفة وخروجها منها. -
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.Initializers الأخرى من استخدامه كعنصر تابع. (I94c31)
إصلاح الأخطاء
- تم إصلاح مشكلة في عملية فحص
NullSafeMutableLiveDatalint عند احتواء الحقل على معدِّلات. (#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: يمكن الآن لقاعدة
NonNullableMutableLiveDataLint التمييز بشكل صحيح بين متغيرات الحقول التي تختلف في إمكانية قبولها قيمًا فارغة. (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 أو الإصدارات الأحدث لملء هذا الحقل بشكل صحيح. تتوفّر إضافتا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 نهائيًا، لأنّها لم تعُد ضرورية عند استخدام الإصدار 1.4 من Kotlin. (I40d3f)
إصلاح الأخطاء
- ترقية androidx لاستخدام الإصدار 1.4 من Kotlin (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لملء هذا الحقل بشكل صحيح. تتوفّر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 هذه التعديلات.
تتشارك حزمة SavedState في Lifecycle ViewModel الآن الإصدار نفسه مع عناصر 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تلقائي. تم إجراء ذلك لكل من Activity1.1.0-alpha02وFragment1.2.0-alpha02وNavigation2.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)
الإصدار 1.0.0-alpha05 من ViewModel-SavedState
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.
الإصدار 1.0.0-alpha01 من ViewModel-Savedstate
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.