مراحل النشاط

أداء المكوّنات الواعية لمراحل النشاط الإجراءات استجابةً لتغيير في حالة دورة حياة مكون آخر، مثل الأنشطة والأقسام. تساعدك هذه المكونات في إنتاج رمز أفضل تنظيمًا وأكثر سهولة في أغلب الأحيان، يسهل صيانته.

يعرض هذا الجدول كل العناصر في مجموعة androidx.lifecycle.

العناصر الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
مراحل النشاط-* 2.8.5 - - 2.9.0-alpha02
إنشاء نموذج عرض دورة الحياة 2.8.5 - - 2.9.0-alpha02
تم إجراء آخر تعديل لهذه المكتبة في 4 سبتمبر 2024.

إعلان التبعيات

لإضافة اعتماد على Lifecycle، يجب إضافة مستودع Google Maven إلى مشروعك. الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.

أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle لـ لتطبيقك أو الوحدة التي تستخدمها:

Kotlin

Groovy

    dependencies {
        def lifecycle_version = "2.8.5"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
        // ViewModel utilities for Compose
        implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
        // Lifecycle utilities for Compose
        implementation "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.5"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
        // ViewModel utilities for Compose
        implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")
        // Lifecycle utilities for Compose
        implementation("androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

Java

Groovy

    dependencies {
        def lifecycle_version = "2.8.5"
        def arch_version = "2.2.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"

        // optional - Test helpers for Lifecycle runtime
        testImplementation "androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.8.5"
        val arch_version = "2.2.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")

        // optional - Test helpers for Lifecycle runtime
        testImplementation("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")
    }
    

لمزيد من المعلومات عن العناصر التابعة، يُرجى الاطّلاع على إضافة تبعيات الإصدار.

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى إلقاء نظرة على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية عن طريق بالنقر فوق زر النجمة.

إنشاء عدد جديد

يُرجى الاطّلاع على مستندات أداة تتبُّع المشاكل. لمزيد من المعلومات.

الإصدار 2.9

الإصدار 2.9.0-alpha02

4 سبتمبر 2024

تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha02. يحتوي الإصدار 2.9.0-alpha02 على عمليات التنفيذ هذه.

إصلاح الأخطاء

مساهمة خارجية

  • نقل androidx.compose.ui.platform.LocalLifecycleOwner إلى مجموعة المصادر المشتركة (KMP) شكرا "إيفان ماتكوف" من JetBrains على المساهمة. (8cd5d03)
  • من رحلة المستخدِم 2.8.5: أصبح تفويض الإضافة SaveStateHandle.saveable` يتيح الآن استخدام القيم القابلة للقيم الفارغة. شكرًا لـ "رومان كالوكيويتش" على هذه المساهمة. (0d78ea6)

الإصدار 2.9.0-alpha01

7 أغسطس 2024

تم طرح androidx.lifecycle:lifecycle-*:2.9.0-alpha01. يحتوي الإصدار 2.9.0-alpha01 على عمليات التنفيذ هذه.

منصة Kotlin المتعددة

  • تتوافق "lifecycle-testing" الآن مع "منصّة KMP". (Iea41e)
  • إضافة دعم لهدف نظام kotlin متعدد الأنظمة الأساسية linuxArm64 (I139d3، b/338268719)

الميزات الجديدة

  • يتوفّر عنصر KMP جديد من androidx.lifecycle:lifecycle-viewmodel-testing يوفِّر فئة ViewModelScenario لاختبار نماذج ViewModels بشكل منفصل، مع دعم onCleared (جميع الأنظمة الأساسية) وSavedStateHandle (نظام التشغيل Android فقط). (337f68d وc9b3409 و9799a95c وb/264602919)
  • أصبح إنشاء ViewModel باستخدام ViewModelProvider آمنًا الآن على مستوى سلسلة المحادثات. تمت إزالة تعليقات @MainThread التوضيحية. (Ifd978 وb/237006831)

التغييرات في واجهة برمجة التطبيقات

  • أضِف وظيفة المصنع CreationExtras.Key() لتبسيط إنشاء عناصر CreationExtras.Key مخفية الهوية. (I970ee)
  • يشتمل CreationExtras الآن على أحمال زائدة لمشغّلي تشغيل شبيه بالخريطة للسماح بمعالجة اصطلاحية للمحتوى في لغة Kotlin. تسمح هذه السياسة باستخدام in و+= و+ مع CreationExtras. (Ib4353)
  • تنفِّذ CreationExtras الآن الطرق equals وhashCode وtoString. (Ib4353)
  • تتوفّر "NewInstanceFactory" الآن على أهداف JVM Desktop وأجهزة Android. (d3d0892)
  • سمة الإضافة المضمّنة لعرض التطبيق الأساسي بأمان باستخدام الإصدار 2.0 من لغة Kotlin (I39df2)

إصلاح الأخطاء

  • تمت إزالة التخطيط اليدوي للوصول إلى واجهات برمجة التطبيقات الجديدة للنظام الأساسي نظرًا لحدوث ذلك تلقائيًا عبر نماذج واجهة برمجة التطبيقات عند استخدام R8 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) وكذلك لجميع الإصدارات عند استخدام AGP 8.1 أو الإصدارات الأحدث (مثل D8 الإصدار 8.1). وننصح العملاء الذين لا يستخدمون AGP بالتحديث إلى الإصدار 8.1 من نظام التشغيل D8 أو الإصدارات الأحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (If6b4c، وb/345472586)

الإصدار 2.8

الإصدار 2.8.5

4 سبتمبر 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.5. يحتوي الإصدار 2.8.5 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • عدِّل قواعد ProGuard في androidx.lifecycle.ReportFragment للسماح بإخفاء مفاتيح فك التشفير . (ff898e1)

مساهمة خارجية

  • يتيح تفويض الإضافة SavedStateHandle.saveable الآن استخدام القيم القابلة للقيم الفارغة. شكرًا لـ "رومان كالوكيويتش" على هذه المساهمة. (0d78ea6)

الإصدار 2.8.4

24 يوليو 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.4. يحتوي الإصدار 2.8.4 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • يعالج LiveData.asFlow() الآن بشكل صحيح الحالات التي يكتمل فيها المسار المعروض فورًا بعد تلقّي قيمة سبق أن تم ضبطها في LiveData (على سبيل المثال، عند استخدام take(1)). (I9c566)
  • أصبح إكمال عملية "Lifecycle*Effect" ثابتًا الآن (أي أنّه إذا تم طلب onStopOrDispose بسبب إيقاف "دورة الحياة"، لن يتم طلبها مرة ثانية عند التخلص من المنتج إلا إذا تعود دورة الحياة إلى STARTED مرة أخرى). (I5f607، b/352364595)

الإصدار 2.8.3

1 يوليو 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.3. يحتوي الإصدار 2.8.3 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • تم إصلاح مشكلة التوافق مع الإصدار 2.8 من Lifecycle 2.8 والإصدارات الأقدم مع نظام Compose 1.6.0 والإصدارات الأقدم عند استخدام تقليص الرموز. (aosp/3133056 وb/346808608)

الإصدار 2.8.2

12 يونيو 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.2. يحتوي الإصدار 2.8.2 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • تم إصلاح أخطاء CompositionLocal LocalLifecycleOwner not present عند استخدام Lifecycle 2.8.X مع الإصدار 1.6.X أو الإصدارات الأقدم. يمكنك الآن استخدام الإصدار 2.8.2 من Lifecycle مع أي إصدار من Compose بدون الحاجة إلى أي حلول بديلة. (aosp/3105647، b/336842920)
  • لن يتعطّل ViewModelProvider بعد ذلك عند مزج الإصدارات السابقة من اعتماديات مراحل النشاط compileOnly مع الإصدارات 2.8 والإصدارات الأحدث، ما يؤدي إلى إصلاح مشاكل مكتبات مثل LeakCanary. (I80383، b/341792251)

الإصدار 2.8.1

29 مايو 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.1. يحتوي الإصدار 2.8.1 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • أصبحت lifecycle-viewmodel-compose الآن تعتمد على compose-runtime فقط، ما يؤدي إلى إزالة اعتمادها المشترك على compose-ui. تحتفظ عناصر Android بـ compose-ui للتوافق. (aosp/3079334، b/339562627)
  • إنّ عملية دمج saveable في "ViewModel" باستخدام ميزة تفويض المواقع الإلكترونية تستخدم اسم الفئة كجزء من المفتاح الذي يتم إنشاؤه تلقائيًا، وذلك لتجنُّب التعارضات إذا كانت هناك صفوف متعددة تستخدم SavedStateHandle نفسه. (aosp/3063463)

الإصدار

14 مايو 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.0. يحتوي الإصدار 2.8.0 على عمليات الالتزام هذه.

تغييرات مهمة منذ الإصدار 2.7.0

  • تم نقل LocalLifecycleOwner من واجهة مستخدم Compose إلى lifecycle-runtime-compose كي يتم استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة Compose.
  • تحتوي عناصر "lifecycle-runtime-compose" الآن على واجهتَي برمجة التطبيقات dropUnlessResumed وdropUnlessStarted اللذَين يسمحان لك بإسقاط النقرات أو الأحداث الأخرى التي تقع حتى بعد انخفاض LifecycleOwner عن Lifecycle.State المحدد. على سبيل المثال، يمكن استخدام ذلك مع ميزة "إنشاء التنقل" لتجنّب معالجة أحداث النقر بعد بدء عملية الانتقال إلى شاشة أخرى: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) }
  • أصبحت ViewModel.viewModelScope الآن مَعلمة دالة إنشاء قابلة للإلغاء، ما يسمح لك بإدخال المُرسل الخاص بك وSupervisorJob() أو إلغاء الإعداد التلقائي باستخدام backgroundScope المتاحة ضمن runTest. (I2817c، b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    
  • تمت إعادة كتابة اللغة ViewModel بلغة Kotlin وأصبحت تستخدم الآن AutoClosable بدلاً من Closeable. يتيح التطبيق الآن إضافة عناصر AutoCloseable باستخدام key، ما يسمح باستردادها عبر getCloseable().

  • إنّ طلب LifecycleStartEffect وLifecycleResumeEffect بدون مفتاح هو الآن خطأ، ويتبع الطريقة نفسها المتّبعة في واجهة برمجة التطبيقات DisposableEffect التي يتم مطابقتها لواجهات برمجة التطبيقات هذه.

  • تم إيقاف LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) لصالح LiveData.toPublisher(lifecycleOwner).

  • تم نقل إضافات Kotlin lifecycle-livedata-core-ktx إلى وحدة lifecycle-livedata-core.

  • تمت إعادة هيكلة NullSafeMutableLiveData لتجنُّب العديد من النتائج الموجبة الخاطئة.

التوافق مع الأنظمة الأساسية المتعدّدة بلغة Kotlin في دورة الحياة

يتم الآن شحن واجهات برمجة التطبيقات الأساسية لمراحل النشاط في Lifecycle وLifecycleOwner وLifecycleObserver وLifecycle.State وLifecycle.Event وLifecycleRegistry في شكل عناصر متوافقة مع Kotlin Multiplatform.

العناصر المتأثرة:

  • ينقل lifecycle-common معظم واجهات برمجة التطبيقات إلى common ويتوافق مع jvm وiOS بالإضافة إلى Android.
  • ينقل lifecycle-runtime معظم واجهات برمجة التطبيقات إلى common ويتوافق مع jvm وiOS بالإضافة إلى Android.
  • lifecycle-runtime-ktx فارغة الآن، مع نقل جميع واجهات برمجة التطبيقات إلى lifecycle-runtime.
  • ينقل lifecycle-runtime-compose جميع واجهات برمجة التطبيقات إلى common ويشحن عناصر Android، ما يتوافق مع التوافق مع الأنظمة الأساسية المتعددة في androidx.compose.

التوافق مع الأنظمة الأساسية المتعددة (ViewModel Kotlin)

يتم الآن شحن عناصر lifecycle-viewmodel وواجهات برمجة التطبيقات، مثل ViewModel وViewModelStore وViewModelStoreOwner وViewModelProvider، في شكل عناصر متوافقة مع منصة Kotlin المتعددة.

لاستيعاب هذا التغيير، أصبحت الآن الطرق مثل تلك المستخدمة على ViewModelProvider والتي تم أخذ java.lang.Class<T> منها مكافئة للطريقة kotlin.reflect.KClass<T>.

تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة العرض الشائعة لواجهة برمجة التطبيقات:

  • يتم الآن إنشاء مثيل ViewModelProvider باستخدام طرق ViewModelProvider.create() بدلاً من استدعاء الدالة الإنشائية مباشرةً.
  • لا يتوفّر كل من ViewModelProvider.NewInstanceFactory وViewModelProvider.AndroidViewModelFactory إلا على Android.
    • يُنصح بتمديد استخدام المصانع المخصّصة من ViewModelProvider.Factory واستخدام طريقة create التي تستخدم CreationExtras أو استخدام viewModelFactory Kotlin DSL.
  • وسيؤدي استخدام "ViewModelProvider" بدون مصنع مخصّص على الأنظمة الأساسية التي لا تستخدم JVM إلى حدوث UnsupportedOperationException. على أنظمة JVM الأساسية، يتم الحفاظ على التوافق باستخدام الدالة الإنشائية ViewModel التي لا تتطلب وسيطًا في حال عدم توفير مصنع مخصص.
  • سينتقل viewModelScope إلى EmptyCoroutineContext في المنصات التي لا يتوفّر فيها Dispatchers.Main (مثل Linux).

العناصر المتأثرة:

  • ينقل lifecycle-viewmodel معظم واجهات برمجة التطبيقات إلى common ويتوافق مع jvm وiOS بالإضافة إلى Android.
  • lifecycle-viewmodel-ktx فارغة الآن، مع نقل جميع واجهات برمجة التطبيقات إلى lifecycle-viewmodel.
  • ينقل lifecycle-viewmodel-compose جميع واجهات برمجة التطبيقات إلى common ويشحن عناصر Android، ما يتوافق مع التوافق مع الأنظمة الأساسية المتعددة في androidx.compose.

تغييرات السلوك

  • ستعرض InitializerViewModelFactory (بما في ذلك دالة الإنشاء viewModelFactory) الآن IllegalArgumentException إذا سبق إضافة initializer مع clazz: KClass<VM : ViewModel> نفسه. (Ic3a36)

المشاكل المعروفة

  • تتطلب ميزة "lifecycle-*:2.8.0" حدًّا أدنى من الإصدار في ميزة "إنشاء" يساوي 1.7.0-alpha05 (b/336842920).

الإصدار 2.8.0-rc01

1 مايو 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.0-rc01. يحتوي الإصدار 2.8.0-rc01 على عمليات التنفيذ هذه.

إصلاح الأخطاء

  • تم إصلاح المشكلة المتمثلة في عدم تجميع الملف الشخصي الأساسي لصفَّين (lifecycle-common) بشكل صحيح. هذه المنتجات مضمّنة الآن في الاقتراحات المطبّقة تلقائيًا في lifecycle-runtime. (aosp/3038274، b/322382422)
  • تم إصلاح تغيير غير مقصود في الترتيب على طريقة محو مثيلات AutoCloseable المرتبطة بنموذج ViewModel، أي الترتيب السابق الذي يبلغ addCloseable(String, AutoCloseable)، ثم addClosable(AutoCloseable)، ثم تمت استعادة onCleared(). (aosp/3041632)
  • يمكنك تحسين سلوك الإنشاء التلقائي لـ viewModelScope للبيئات الأصلية وبيئات JVM Desktop. (aosp/3039221)

مساهمة خارجية

  • شكرًا "فيكتور كروب" على تحسين عملية البحث عن سلسلة التعليمات الرئيسية على JVM Desktop. (aosp/3037116)

الإصدار 2.8.0-beta01

17 أبريل 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.0-beta01. يحتوي الإصدار 2.8.0-beta01 على عمليات التنفيذ هذه.

الميزات الجديدة

  • أصبح عنصر "lifecycle-runtime-compose" متوافقًا الآن مع لغة Kotlin Multiplatform، ما سينقل رمزه إلى common ويتيح أيضًا إمكانية إرسال عناصر Android، ما يتوافق مع التوافق مع الأنظمة الأساسية المتعدّدة في "androidx.compose". (If7a71 وI4f4a0 وb/331769623)

الإصدار 2.8.0-alpha04

3 أبريل 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha04. يحتوي الإصدار 2.8.0-alpha04 على عمليات التنفيذ هذه.

الميزات الجديدة

  • أصبح عنصر "lifecycle-viewmodel-compose" متوافقًا الآن مع لغة Kotlin Multiplatform، ما سينقل رمزه إلى common ويتيح أيضًا إرسال عناصر Android، بما يتوافق مع التوافق مع الأنظمة الأساسية المتعددة في "androidx.compose". لاستيعاب هذا التغيير، تقبل طريقة viewModel القابلة للتعديل الآن KClass بالإضافة إلى java.lang.Class. (b/330323282)

إصلاح الأخطاء

  • تمت إعادة هيكلة NullSafeMutableLiveData لتجنُّب العديد من النتائج الموجبة الخاطئة. (I2d8c1 وIafb18 وI03463 وI7ecef)

تعديل بشأن التبعية

الإصدار 2.8.0-alpha03

20 مارس 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha03. يحتوي الإصدار 2.8.0-alpha03 على عمليات التنفيذ هذه.

الميزات الجديدة

  • أصبحت ViewModel.viewModelScope الآن مَعلمة دالة إنشاء قابلة للإلغاء، ما يسمح لك بإدخال المُرسل الخاص بك وSupervisorJob() أو إلغاء الإعداد التلقائي باستخدام backgroundScope المتاحة ضمن runTest. (I2817c، b/264598574)

    class MyViewModel(
      // Make Dispatchers.Main the default, rather than Dispatchers.Main.immediate
      viewModelScope: CoroutineScope = Dispatchers.Main + SupervisorJob()
    ) : ViewModel(viewModelScope) {
      // Use viewModelScope as before, without any code changes
    }
    
    // Allows overriding the viewModelScope in a test
    fun Test() = runTest {
      val viewModel = MyViewModel(backgroundScope)
    }
    

توافق Kotlin متعدد الأنظمة الأساسية

يتم الآن شحن عناصر lifecycle-viewmodel وواجهات برمجة التطبيقات، مثل ViewModel وViewModelStore وViewModelStoreOwner وViewModelProvider، في شكل عناصر متوافقة مع منصة Kotlin المتعددة. (b/214568825)

لاستيعاب هذا التغيير، أصبحت الآن الطرق مثل تلك المستخدمة على ViewModelProvider والتي تم أخذ java.lang.Class<T> منها مكافئة للطريقة kotlin.reflect.KClass<T>.

تم الحفاظ على التوافق الثنائي على Android، ولكن هناك بعض التغييرات الملحوظة عند مقارنة مساحة واجهة برمجة تطبيقات Android بمساحة العرض الشائعة لواجهة برمجة التطبيقات:

  • يتم الآن إنشاء مثيل ViewModelProvider باستخدام طرق ViewModelProvider.create() بدلاً من استدعاء الدالة الإنشائية مباشرةً.
  • لا يتوفّر كل من ViewModelProvider.NewInstanceFactory وViewModelProvider.AndroidViewModelFactory إلا على Android.
    • يُنصح بتمديد استخدام المصانع المخصّصة من ViewModelProvider.Factory واستخدام طريقة create التي تستخدم CreationExtras أو استخدام viewModelFactory Kotlin DSL.
  • وسيؤدي استخدام "ViewModelProvider" بدون مصنع مخصّص على الأنظمة الأساسية التي لا تستخدم JVM إلى حدوث UnsupportedOperationException. على أنظمة JVM الأساسية، يتم الحفاظ على التوافق باستخدام الدالة الإنشائية ViewModel التي لا تتطلب وسيطًا في حال عدم توفير مصنع مخصص.
  • سينتقل viewModelScope إلى EmptyCoroutineContext في المنصات التي لا يتوفّر فيها Dispatchers.Main (مثل Linux).

تغييرات السلوك

  • ستعرض InitializerViewModelFactory (بما في ذلك دالة الإنشاء viewModelFactory) الآن IllegalArgumentException إذا سبق إضافة initializer مع clazz: KClass<VM : ViewModel> نفسه. (Ic3a36)

إصلاح الأخطاء

  • يتعامل ViewModel.getCloseable الآن مع المفاتيح المكرّرة: إذا كان key لديه مورد AutoCloseable مرتبط به، سيتم استبدال المورد القديم وإغلاقه على الفور. (Ibeb67)
  • الوصول إلى viewModelScope من ViewModel أصبح آمنًا الآن. (If4766 وb/322407038)

مساهمة خارجية

  • تم نقل LocalLifecycleOwner من واجهة مستخدم Compose إلى عملية الإنشاء في وقت التشغيل خلال مراحل النشاط، وذلك كي يتم استخدام واجهات برمجة التطبيقات المساعدة المستندة إلى Compose خارج واجهة مستخدم Compose. شكرًا لـ "جيك وارتون" على هذه المساهمة. (I6c41b، b/328263448)

الإصدار 2.8.0-alpha02

21 فبراير 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha02. يحتوي الإصدار 2.8.0-alpha02 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمّت إضافة واجهتَي برمجة التطبيقات dropUnlessResumed وdropUnlessStarted، ما يتيح لك خفض النقرات أو الأحداث الأخرى التي تحدث حتى بعد انخفاض قيمة LifecycleOwner إلى ما دون Lifecycle.State المحدَّد. على سبيل المثال، يمكن استخدام ذلك مع ميزة "إنشاء التنقل" لتجنّب معالجة أحداث النقر بعد بدء الانتقال إلى شاشة أخرى: onClick: () -> Unit = dropUnlessResumed { navController.navigate(NEW_SCREEN) } (Icba83، b/317230685)

إحالات Kotlin الناجحة

  • تمت كتابة ViewModel الآن بلغة Kotlin (I16f26، b/214568825).
  • تم الآن نقل إضافات Kotlin lifecycle-viewmodel-ktx إلى وحدة مراحل النشاط الأساسية. (Id787b، b/274800183)
  • تم الآن نقل إضافات Kotlin lifecycle-runtime-ktx إلى وحدة مراحل النشاط الأساسية. (Ic3686، b/274800183)
  • تم الآن نقل إضافات Kotlin lifecycle-livedata-core-ktx إلى وحدة مراحل النشاط الأساسية. (I54a3d، b/274800183)

توافق Kotlin متعدد الأنظمة الأساسية

  • يتم الآن شحن واجهات برمجة التطبيقات الأساسية لمراحل النشاط في Lifecycle وLifecycleOwner وLifecycleObserver وLifecycle.State وLifecycle.Event وLifecycleRegistry في شكل عناصر متوافقة مع Kotlin Multiplatform. (b/317249252)

التغييرات في واجهة برمجة التطبيقات

  • إنّ طلب LifecycleStartEffect وLifecycleResumeEffect بدون مفتاح هو الآن خطأ، ويتبع الطريقة نفسها المتّبعة في واجهة برمجة التطبيقات DisposableEffect التي يتم مطابقتها لواجهات برمجة التطبيقات هذه. (Ib0e0c، b/323518079)
  • يستخدم تطبيق "ViewModel" الآن AutoCloseable بدلاً من Closeable. وهذا يعد تغييرًا متوافقًا مع الأنظمة القديمة. (I27f8e، b/214568825)
  • تم إيقاف LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) لصالح LiveData.toPublisher(lifecycleOwner). (Iabe29، b/262623005)

مساهمة خارجية

  • شكرا "إيفان ماتكوف" من Jetbrains على مساعدته في نقل الدورة التدريبية إلى النظام الأساسي Kotlin المتعدد. (aosp/2926690 وI0c5ac وIf445d)

الإصدار 2.8.0-alpha01

24 يناير 2024

تم طرح androidx.lifecycle:lifecycle-*:2.8.0-alpha01. يحتوي الإصدار 2.8.0-alpha01 على هذه عمليات التنفيذ.

الميزات الجديدة

  • أصبح تطبيق ViewModel يتيح الآن إضافة عناصر Closeable باستخدام key، ما يسمح باستردادها عبر getCloseable(). (I3cf63)

الإصدار 2.7

الإصدار

10 يناير 2024

تم طرح androidx.lifecycle:lifecycle-*:2.7.0. يحتوي الإصدار 2.7.0 على هذه الالتزامات.

تغييرات مهمة منذ الإصدار 2.6.0

  • تشتمل TestLifecycleOwner الآن على دالة تعليق setCurrentState() التي تضمن تغيير الحالة وإكمال جميع عمليات استدعاء LifecycleObserver قبل العودة. جدير بالذكر أنّه على عكس ضبط السمة currentState مباشرةً، لا يتم استخدام السمة runBlocking، ما يجعلها آمنة للاستخدام ضمن الكوروتينات، مثل الكوروتين الذي يقدّمه runTest.
  • تعكس إضافتا LiveData لـ map وswitchMap الآن سلوك distinctUntilChanged. إذا كانت السمة LiveData تضم مجموعة value، سيتم استدعاء الدالة map/switchMap على الفور لتعبئة value من LiveData المعروض. يضمن ذلك ضبط القيمة الأولية كجزء من المقطوعة الموسيقية الأولى (عند استخدامها مع observeAsState())، ولكنه لا يغيّر سلوك الملاحظة، إذ سيتم تعديل القيم من المصدر LiveData فقط بعد البدء في ملاحظة LiveData.
  • يعمل هذا الإصدار على إصلاح المشكلة المتمثلة في عدم استعادة SavedStateHandle فئات Parcelable المخصصة بشكل صحيح بعد توقُّف العملية وإعادة الإنشاء. بسبب أنواع المعلومات غير المتاحة في إطار عمل Android، تتطلّب صفائف بيانات الأراضي المخصّصة جهدًا إضافيًا (إنشاء مصفوفة مكتوبة من النوع الصحيح يدويًا) وتستدعي الآن مستندات get وgetLiveData وgetStateFlow هذا القيد تحديدًا.
  • تمّت إزالة قواعد Proguard المرتبطة بـ LifecycleObserver. يعني هذا أنّ الرموز البرمجية المحمية التي تريد استخدام واجهات برمجة التطبيقات من خلال الانعكاس (مثل استخدام تعليق @OnLifecycleEvent التوضيحي الذي تم إيقافه منذ فترة طويلة) يجب أن توفّر قواعد الاحتفاظ الخاصة بها لحالة الاستخدام المحدّدة.

إمكانية تتبّع الأحداث في مراحل النشاط

  • كبديل لاستخدام LifecycleEventObserver، يمكنك الآن رصد Flow من Lifecycle.Event من خلال طريقة الإضافة Lifecycle.asFlow().
  • يمكن لمستخدمي Jetpack Compose الآن استخدام LifecycleEventEffect لتنفيذ التأثيرات الجانبية في Compose استنادًا إلى Lifecycle.Event.
@Composable
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
    viewModel.refreshData()
  }
  // …
}
  • يمكن لمستخدمي Jetpack Compose استخدام LifecycleStartEffect وLifecycleResumeEffect للتعامل مع الأزواج من الأحداث، التي تم إيقافها مؤقتًا واستئنافها إلى الإيقاف المؤقت، على التوالي. تُطابِق واجهة برمجة التطبيقات هذه واجهة برمجة التطبيقات التي تم العثور عليها في "DisposableEffect"، وتناسب الحالات التي يجب فيها التراجع عن التغيير الذي يتم إجراؤه عندما تغيّر الحالة.
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
  LifecycleStartEffect(viewModel) {
    val timeTracking = viewModel.startTrackingTimeOnScreen()
    onStopOrDispose {
      timeTracking.stopTrackingTimeOnScreen()
    }
  }
  // …
}

راجِع مقالة تشغيل الرمز في مراحل النشاط للحصول على مزيد من المعلومات.

مراقبة حالة دورة الحياة

  • يمكن الآن ملاحظة قيمة Lifecycle.State الحالية من خلال السمة Lifecycle.currentStateFlow التي تعرض قيمة StateFlow حيث تكون value هي قيمة Lifecycle.State الحالية.
  • يمكن لمستخدمي Jetpack Compose استخدام إضافة Lifecycle.currentStateAsState() لعرض Lifecycle.State مباشرةً في صورة State Compose. يعادل ذلك lifecycle.currentStateFlow.collectAsState() (وبديل أقصر).

راجِع مقالة جمع حالة مراحل النشاط باستخدام المسارات للحصول على مزيد من المعلومات.

الإصدار 2.7.0-rc02

13 كانون الأول (ديسمبر) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.7.0-rc02. يحتوي الإصدار 2.7.0-rc02 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم استعادة SavedStateHandle صفوف Parcelable المخصّصة بشكل صحيح بعد توقُّف العملية وإعادة تشغيلها. بسبب أنواع المعلومات غير المتاحة في إطار عمل Android، تتطلّب صفائف بيانات الأراضي المخصّصة جهدًا إضافيًا (إنشاء مصفوفة مكتوبة من النوع الصحيح يدويًا) وتستدعي الآن مستندات get وgetLiveData وgetStateFlow هذا القيد تحديدًا. (I0b55a)

الإصدار 2.7.0-rc01

15 تشرين الثاني (نوفمبر) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.7.0-rc01. يحتوي الإصدار 2.7.0-rc01 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • يتم الآن التخلص من LifecycleStartEffect وLifecycleResumeEffect بشكل صحيح وإعادة إنشاء قالب التأثير في حال تغيير LifecycleOwner. (Ia25c6)

الإصدار 2.7.0-beta01

1 تشرين الثاني (نوفمبر) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.7.0-beta01 بدون أي تغييرات. يحتوي الإصدار 2.7.0-beta01 على هذه الالتزامات.

  • إصدار تجريبي للنسخة التجريبية، بدون إجراء تغييرات رئيسية على هذا الإصدار

الإصدار 2.7.0-alpha03

18 تشرين الأول (أكتوبر) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha03. يحتوي الإصدار 2.7.0-alpha03 على هذه عمليات التنفيذ.

الميزات الجديدة

  • يتضمّن تطبيق "lifecycle-runtime-testing" الآن فحصًا جديدًا من Lint لتجنّب ضبط Lifecycle.State من TestLifecycleOwner باستخدام الحقل currentState عندما يكون داخل الكوروتين. تقترح عملية فحص Lint الآن عملية تعليق setCurrentState، ما يسمح بضبط Lifecycle.State بدون حظر. (Icf728، b/297880630)

إصلاح الأخطاء

  • تم إصلاح مشكلة في LiveData.switchMap حيث يؤدي عرض مثيل LiveData نفسه في كل من المكالمة الأولى والمكالمة اللاحقة إلى منع إضافة مثيل LiveData كمصدر. (Ibedcba7)

الإصدار 2.7.0-alpha02

6 أيلول (سبتمبر) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha02. يحتوي الإصدار 2.7.0-alpha02 على هذه عمليات التنفيذ.

الميزات الجديدة

  • يشتمل TestLifecycleOwner الآن على دالة التعليق setCurrentState() لمنح المستخدمين خيار استخدام TestLifecycleOwner من داخل الكوروتين، مثل الذي يوفره runTest. (I329de، b/259344129)

التغييرات في واجهة برمجة التطبيقات

  • تم نقل جميع الملفات من وحدات lifecycle-livedata-ktx إلى وحدة lifecycle-livedata الرئيسية. (I10c6f، b/274800183)

تغييرات السلوك

  • تضبط الإضافتان LiveData.map() وLiveData.switchMap() الآن value من LiveData المعروض إذا تم ضبط قيمة LiveData السابقة، ما يضمن وضع الحالة المناسبة في التركيبة الأولية عند استخدام LiveData الناتج في Jetpack Compose. (I91d2b، b/269479952)
  • يُغلِق addCloseable() في "ViewModel" الآن Closeable على الفور إذا سبق أن تلقّى ViewModel مكالمة هاتفية إلى onCleared(). (I4712e، b/280294730)

إصلاح الأخطاء

  • من دورة الحياة 2.6.2: تم إصلاح المشكلة المتمثلة في عدم استعادة SavedStateHandle بشكل صحيح بعد وفاة العملية في حال استعادة الحالة، وتم استدعاء save() بدون حفظ الحالة في العنصر الرئيسي SavedStateRegistry، ثم تمت استعادة الحالة مرة أخرى. يؤدي هذا إلى إصلاح التفاعل بين rememberSaveable وNavHost في ميزة "إنشاء التنقل". (aosp/2729289)

الإصدار 2.7.0-alpha01

26 تموز (يوليو) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.7.0-alpha01. يحتوي الإصدار 2.7.0-alpha01 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • أصبحت ميزة "Lifecycle.State" قابلة للتتبّع عبر Lifecycle.currentStateFlow، ما يؤدي إلى عرض علامة StateFlow حيث تمثّل value قيمة Lifecycle.State الحالية. (Ib212d، b/209684871)
  • يمكن الآن مُلاحظة Lifecycle.Event على أنّها Flow باستخدام Lifecycle.asFlow(). (If2c0f وb/176311030).
  • تمت إضافة واجهة برمجة تطبيقات LifecycleResumeEffect لتشغيل عناصر SideEffect استنادًا إلى استدعاءات أحداث Lifecycle.Event.ON_RESUME وLifecycle.Event.ON_PAUSE. (I60386، b/235529345)
  • تمت إضافة واجهة برمجة تطبيقات LifecycleStartEffect لتشغيل عناصر SideEffect استنادًا إلى عمليات استدعاء الأحداث Lifecycle.Event.ON_START وLifecycle.Event.ON_STOP. (I5a8d1، b/235529345)
  • تمت إضافة واجهة برمجة تطبيقات LifecycleEventEffect لتنفيذ إنشاء SideEffect استنادًا إلى Lifecycle.Event. (Ic9794، b/235529345)
  • تم إدراج إضافة Lifecycle.collectAsState() لعرض Lifecycle.State مباشرةً في حالة إنشاء State. يعادل ذلك lifecycle.currentStateFlow.collectAsState() (وبديل أقصر). (I11015، b/235529345)

إصلاح الأخطاء

  • تضبط الإضافة LiveData.distinctUntilChanged() الآن value من LiveData التي تم عرضها إذا كانت قيمة LiveData السابقة قد تم ضبطها. لا يؤدي ذلك إلى تغيير سلوك الملاحظة، إذ سيتم تطبيق القيم المعدَّلة من المصدر LiveData فقط عند البدء في ملاحظة قيم LiveData المعروضة من distinctUntilChanged(). (Ib482f)
  • تمّت إزالة قواعد Proguard المرتبطة بـ LifecycleObserver. يعني هذا أنّ الرموز البرمجية المحمية التي تتطلب استخدام واجهات برمجة التطبيقات من خلال الانعكاس يجب أن توفّر قواعد الاحتفاظ الخاصة بها لحالة الاستخدام الخاصة بها. (Ia12fd)

الإصدار 2.6

الإصدار 2.6.2

6 أيلول (سبتمبر) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.6.2. يحتوي الإصدار 2.6.2 على هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم إمكانية استعادة SavedStateHandle بشكل صحيح بعد وفاة العملية في حال استعادة الحالة، وتم استدعاء save() بدون حفظ الحالة فعليًا في SavedStateRegistry الرئيسي، ثم تمت استعادة الحالة مرة أخرى. يؤدي هذا إلى إصلاح التفاعل بين rememberSaveable وNavHost في ميزة "إنشاء التنقل". (aosp/2729289)

الإصدار 2.6.1

22 آذار (مارس) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.6.1. يحتوي الإصدار 2.6.1 على هذه الالتزامات.

التحديثات المتعلقة بالاعتمادية

الإصدار

8 آذار (مارس) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.6.0. يحتوي الإصدار 2.6.0 على هذه الالتزامات.

تغييرات مهمة منذ الإصدار 2.5.0

  • تتضمّن السمة LiveData الآن السمة isInitialized الجديدة التي تشير إلى ما إذا كان قد تم ضبط قيمة صريحة في LiveData، ما يسمح لك بالتمييز بين liveData.value التي تعرض null لأنّه لم يتم ضبط أي قيمة من قبل أو على قيمة null صريحة.
  • تشتمل MediatorLiveData الآن على دالة إنشائية لضبط قيمة أولية.
  • تمت إضافة إضافة جديدة في StateFlow وFlow لـ collectAsStateWithLifecycle() وهي تجمع من التدفقات وتمثل أحدث قيمة لها مثل حالة Compose (حالة Compose) مع مراعاة مراحل النشاط.
  • تم إيقاف Lifecycle.launchWhenX طريقة وLifecycle.whenX طريقة نهائيًا لأنّ استخدام مُرسِل الإيقاف المؤقت يمكن أن يؤدي إلى إهدار موارد في بعض الحالات. ويُنصح باستخدام السمة Lifecycle.repeatOnLifecycle. لمزيد من المعلومات عن تعليق العمل لمرة واحدة، يُرجى الاطّلاع على هذا الشرح حول سبب عدم أمان هذا الإجراء في حد ذاته.
  • تحويل Kotlin: تم تحويل عدد كبير من صفوف مراحل النشاط إلى لغة Kotlin. لا تزال جميع الفئات التي تم تحويلها تحتفظ بتوافقها الثنائي مع الإصدارات السابقة. تحتوي الفئات التالية على تغييرات غير متوافقة للفئات المكتوبة بلغة Kotlin: ViewTreeLifecycleOwner وLiveDataReactiveStreams وHasDefaultViewModelProviderFactory وViewTreeViewModelStoreOwner وTransformations وViewModelStoreOwner وLifecycleOwner.

يعرِض الجدول أدناه الإحالات الناجحة المصدر في الإصدار الجديد من مراحل النشاط.

دورة الحياة 2.5 Lifecycle 2.5 (KTX) دورة الحياة 2.6
Transformations.switchMap(liveData) {...} liveData.switchMap {...} liveData.switchMap {...}
Transformations.map(liveData) {...} liveData.map {...} liveData.map {...}
Transformations.distinctUntilChanged(liveData) {...} liveData.distinctUntilChanged{...} liveData.distinctUntilChanged{...}
LiveDataReactiveStreams.fromPublisher(publisher) publisher.toLiveData() publisher.toLiveData()
LiveDataReactiveStreams.toPublisher(lifecycleOwner, liveData) liveData.toPublisher(lifecycleOwner) liveData.toPublisher(lifecycleOwner)
override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory override val defaultViewModelProviderFactory = factory
override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override fun getDefaultViewModelCreationExtras(): CreationExtras = extras override val defaultViewModelProviderCreationExtras = extras
ViewTreeLifecycleOwner.set(view, owner) ViewTreeLifecycleOwner.set(view, owner) view.setViewTreeLifecycleOwner(owner)
ViewTreeLifecycleOwner.get(view) view.findViewTreeLifecycleOwner() view.findViewTreeLifecycleOwner()
override fun getViewModelStore(): ViewModelStore = store override fun getViewModelStore(): ViewModelStore = store override val viewModelStore: ViewModelStore = store
override fun getLifecycle(): Lifecycle = registry override fun getLifecycle(): Lifecycle = registry override val lifecycle: Lifecycle get() = registry
  • تتطابق الآن قابلية القيم الفارغة لطريقة onChanged لـ Observer التي تم إنشاؤها في Kotlin مع قابلية القيم الفارغة للنوع العام. إذا أردت قبول Observer.onChanged() لنوع قابل للقيم الفارغة، يجب إنشاء مثيل لـ Observer باستخدام نوع قابل للقيم الفارغة.
  • تم تحويل هذه الصفوف أيضًا إلى لغة Kotlin، ولكنها لا تزال متوافقة مع المصادر: DefaultLifecycleObserver وLifecycleEventObserver وLifecycle وLifecycleRegistry وLifecycleObserver وViewModelStore وAndroidViewModel وAbstractSavedStateViewModelFactory وLifecycleService وServiceLifecycleDispatcher وProcessLifecycleOwner.

الإصدار 2.6.0-rc01

22 شباط (فبراير) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.6.0-rc01. يحتوي الإصدار 2.6.0-rc01 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تضبط الإضافة LiveData.distinctUntilChanged() الآن value من LiveData التي تم عرضها إذا كانت قيمة LiveData السابقة قد تم ضبطها. لا يؤدي ذلك إلى تغيير سلوك الملاحظة، إذ سيتم تطبيق القيم المعدَّلة من المصدر LiveData فقط عند البدء في ملاحظة قيم LiveData المعروضة من distinctUntilChanged(). (Ib482f)

الإصدار 2.6.0-beta01

8 شباط (فبراير) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.6.0-beta01. يحتوي الإصدار 2.6.0-beta01 على هذه الالتزامات.

إحالات Kotlin الناجحة

  • تمت كتابة LifecycleOwner الآن بلغة Kotlin. هذا تغيير في المصدر غير متوافق مع الفئات المكتوبة بلغة Kotlin، ويجب أن تلغي التغييرات الآن السمة lifecycle بدلاً من تنفيذ دالة getLifecycle() السابقة. (I75b4b، b/240298691)
  • ViewModelStoreOwner الآن بلغة Kotlin. هذا تغيير في المصدر غير متوافق مع الفئات المكتوبة بلغة Kotlin، ويجب أن تلغي التغييرات الآن السمة viewModelStore بدلاً من تنفيذ دالة getViewModelStore() السابقة. (I86409، b/240298691)
  • تم نقل إضافة Kotlin على LifecycleOwner التي توفّر الحقل lifecycleScope إلى العنصر lifecycle-common من lifecycle-runtime-ktx. (I41d78، b/240298691)
  • تم نقل إضافة Kotlin على Lifecycle التي توفّر الحقل coroutineScope إلى العنصر lifecycle-common من lifecycle-runtime-ktx. (Iabb91، b/240298691)

الإصدار 2.6.0-alpha05

25 كانون الثاني (يناير) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha05. يحتوي الإصدار 2.6.0-alpha05 على هذه عمليات التنفيذ.

إحالات Kotlin الناجحة

  • تمت كتابة Transformations الآن بلغة Kotlin. يُعد هذا تغييرًا في المصدر غير متوافق مع هذه الفئات المكتوبة بلغة Kotlin والتي كانت تستخدم بنيةً مباشرة، مثل Transformations.map. يجب أن يستخدم رمز Kotlin الآن بنية طريقة إضافة Kotlin التي كانت متاحة في السابق عند استخدام lifecycle-livedata-ktx فقط. عند استخدام لغة برمجة Java، يتم إيقاف إصدارات هذه الطرق التي تستخدم الإجراء androidx.arch.core.util.Function نهائيًا واستبدالها بالإصدارات التي تستخدم لغة Function1 بلغة Kotlin. يحافظ هذا التغيير على التوافق الثنائي. (I8e14f)
  • تمت كتابة ViewTreeViewModelStoreOwner الآن بلغة Kotlin. هذا تغيير في المصدر غير متوافق مع هذه الفئات المكتوبة بلغة Kotlin. يجب الآن استيراد طرق إضافة Kotlin واستخدامها مباشرةً على View من androidx.lifecycle.setViewTreeViewModelStoreOwner وandroidx.lifecycle.findViewTreeViewModelStoreOwner لضبط مالك تم ضبطه في السابق والعثور عليه. يعد هذا متوافقًا مع النظام الثنائي ويظل مصدرًا متوافقًا مع عمليات التنفيذ المكتوبة بلغة برمجة Java. (Ia06d8، وIb22d8، وb/240298691)
  • تمت كتابة الواجهة HasDefaultViewModelProviderFactory الآن بلغة Kotlin. يمثّل هذا تغيير مصدر غير متوافق مع الفئات المكتوبة بلغة Kotlin، ويجب أن تلغي الآن السمتَين defaultViewModelProviderFactory وdefaultViewModelCreationExtras بدلاً من تنفيذ الدوال المقابلة السابقة. (Iaed9c، b/240298691)
  • تمت كتابة Observer الآن بلغة Kotlin. تستخدم طريقة onChanged() الآن الاسم value لمعلّمتها. (Iffef2 وI4995e وb/240298691)
  • تمت كتابة AndroidViewModel وAbstractSavedStateViewModelFactory وLifecycleService وServiceLifecycleDispatcher وProcessLifecycleOwner الآن بلغة Kotlin (I2e771 وIbae40 وI160d7 وI08884 وI1cda7 وb/240298691).

الإصدار 2.6.0-alpha04

11 كانون الثاني (يناير) 2023

تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha04. يحتوي الإصدار 2.6.0-alpha04 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تتضمّن السمة LiveData الآن السمة isInitialized الجديدة التي تشير إلى ما إذا كان قد تم ضبط قيمة صريحة في LiveData، ما يسمح لك بالتمييز بين liveData.value التي تعرض null لأنّه لم يتم ضبط أي قيمة من قبل أو على قيمة null صريحة. (Ibd018)

التغييرات في واجهة برمجة التطبيقات

  • لم تعُد واجهات برمجة التطبيقات collectAsStateWithLifecycle() الخاصة بـ lifecycle-runtime-compose في الحالة التجريبية. (I09d42، b/258835424)
  • تم إيقاف Lifecycle.launchWhenX طريقة وLifecycle.whenX طريقة نهائيًا لأنّ استخدام مُرسِل الإيقاف المؤقت يمكن أن يؤدي إلى إهدار موارد في بعض الحالات. ويُنصح باستخدام السمة Lifecycle.repeatOnLifecycle. (Iafc54، b/248302832)

إحالات Kotlin الناجحة

  • تمت كتابة ViewTreeLifecycleOwner الآن بلغة Kotlin. هذا تغيير في المصدر غير متوافق مع هذه الفئات المكتوبة بلغة Kotlin. يجب الآن استيراد طرق إضافة Kotlin واستخدامها مباشرةً على View من androidx.lifecycle.setViewTreeLifecycleOwner وandroidx.lifecycle.findViewTreeLifecycleOwner لضبط مالك تم ضبطه في السابق والعثور عليه. يحل ذلك محل إضافة Kotlin السابقة في lifecycle-runtime-ktx. يعد هذا متوافقًا مع النظام الثنائي ويظل مصدرًا متوافقًا مع عمليات التنفيذ المكتوبة بلغة برمجة Java. (I8a77a، وI5234e، وb/240298691)
  • تمت كتابة LiveDataReactiveStreams الآن بلغة Kotlin. تم نقل إضافات Kotlin التي كانت متوفّرة سابقًا في lifecycle-reactivestreams-ktx إلى وحدة lifecycle-reactivestreams وأصبحت واجهة الرموز البرمجية المكتوبة بلغة Kotlin. وهذا تغيير في المصدر غير متوافق مع الرمز البرمجي المكتوب بلغة Kotlin إذا لم يسبق لك استخدام واجهات برمجة تطبيقات طريقة إضافة Kotlin. (I2b1b9، وI95d22، وb/240298691)
  • تمت كتابة DefaultLifecycleObserver وLifecycleEventObserver وLifecycle وLifecycleRegistry وLifecycleObserver وViewModelStore الآن باللغات Kotlin (Iadffd و(I60034 وI8c52c وI9593d وI01fe1 وI59a23 وI59a23 و{109a23 وI9593d.

إصلاح الأخطاء

  • SavedStateHandle لم يعد يتعطّل مع ClassCastException عند الاتصال بـ get() بالفئة غير الصحيحة الكتابة. (I6ae7c)

الإصدار 2.6.0-alpha03

24 تشرين الأول (أكتوبر) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha03. يحتوي الإصدار 2.6.0-alpha03 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح مشكلة تتعلق بالقيود بين وحدات "مراحل النشاط" المختلفة التي لا تعمل على النحو المنشود. (I18d0d، b/249686765)
  • تشتمل الأخطاء التي ارتكبها LifecycleRegistry.moveToState() الآن على رسائل خطأ أكثر فائدة لإعلام المطوّرين بالمكوّن الذي يتسبب في حدوث الخطأ. (Idf4b2، b/244910446)

الإصدار 2.6.0-alpha02

7 أيلول (سبتمبر) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha02. يحتوي الإصدار 2.6.0-alpha02 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • تشتمل MediatorLiveData الآن على دالة إنشائية لضبط قيمة أولية. (Ib6cc5، b/151244085)

إصلاح الأخطاء

  • تتضمّن عناصر Lifecycle الآن قيودًا تضمن أنّ جميع عناصر مراحل النشاط المترابطة تستخدم الإصدار نفسه، ما يؤدي إلى ترقية الاعتمادية الأخرى تلقائيًا عند ترقية أحد العناصر. b/242871265
  • تنشئ خدمة "FlowLiveData.asFlow()" الآن callbackFlow بدلاً من استخدام عملية تنفيذ "Channel" الخاصة بها لضمان أمان سلسلة المحادثات والحفاظ على السياق. (I4a8b2، b/200596935)
  • تحتفظ دالة asLiveData في FlowLiveData الآن بالقيمة الأولية StateFlow عند إنشاء كائن LiveData الجديد. (I3f530، b/157380488)
  • من دورة الحياة 2.5.1: عمليات التنفيذ المخصّصة لـ AndroidViewModelFactory تستدعي الآن الدالة create(modelClass) بشكل صحيح عند استخدام الدالة الإنشائية ذات الحالة الصلبة مع الإصدار 2.4 من Lifecycle والإصدارات الأحدث (I5b315، b/238011621)

الإصدار 2.6.0-alpha01

29 حزيران (يونيو) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.6.0-alpha01. يحتوي الإصدار 2.6.0-alpha01 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمت إضافة إضافة جديدة في StateFlow وFlow لـ collectAsStateWithLifecycle والتي تجمع من التدفقات وتمثل أحدث قيمة لها كحالة Compose (حالة Compose) مع مراعاة مراحل النشاط. يتم جمع التدفق وضبط الانبعاثات الجديدة على قيمة الولاية عندما تكون دورة الحياة في Lifecycle.State معيّنة على الأقل. عندما تقل دورة الحياة عن Lifecycle.State، يتوقف جمع البيانات ولا يتم تعديل قيمة الولاية. (I1856e، b/230557927)

الإصدار 2.5

الإصدار 2.5.1

27 تموز (يوليو) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.1. يحتوي الإصدار 2.5.1 على هذه الالتزامات.

إصلاح الأخطاء

  • تتطلب عمليات التنفيذ المخصّصة لـ AndroidViewModelFactory الآن الدالة create(modelClass) بشكل صحيح عند استخدام الدالة الإنشائية AndroidViewModelFactory ذات الحالة مع الإصدار 2.4 من Lifecycle والإصدارات الأحدث. (I5b315، b/238011621)

الإصدار 2.5.0

29 حزيران (يونيو) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0. يحتوي الإصدار 2.5.0 على هذه الالتزامات.

تغييرات مهمة منذ الإصدار 2.4.0

  • يوفّر SavedStateHandle الآن واجهة برمجة تطبيقات getStateFlow() تعرض رمز Kotlin StateFlow لرصد التغييرات في القيم كبديل لاستخدام LiveData.

  • ViewModel CreationExtra: عند كتابة ViewModelProvider.Factory مخصّصة، لم يعُد من الضروري تمديد AndroidViewModelFactory أو AbstractSavedStateViewModelFactory للوصول إلى Application أو SavedStateHandle على التوالي. بدلاً من ذلك، يتم توفير هذه الحقول لكل فئة فرعية ViewModelProvider.Factory باعتبارها CreationExtras من خلال التحميل الزائد الجديد لـ create: create(Class<T>, CreationExtras). يتم توفير هذه الميزات الإضافية تلقائيًا من خلال "النشاط" أو "الجزء" عند استخدام النشاط 1.5.0 والقسم 1.5.0، على التوالي.

    class CustomFactory : ViewModelProvider.Factory {
        override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
            return when (modelClass) {
                HomeViewModel::class -> {
                    // Get the Application object from extras
                    val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                    // Pass it directly to HomeViewModel
                    HomeViewModel(application)
                }
                DetailViewModel::class -> {
                    // Create a SavedStateHandle for this ViewModel from extras
                    val savedStateHandle = extras.createSavedStateHandle()
                    DetailViewModel(savedStateHandle)
                }
                else -> throw IllegalArgumentException("Unknown class $modelClass")
            } as T
        }
    }
    
  • يوفّر lifecycle-viewmodel الآن حزمة viewModelFactory Kotlin DSL التي تتيح لك تحديد ViewModelProvider.Factory من خلال أداة إعداد lambda واحدة أو أكثر، مع استخدام إعداد واحد لكل فئة ViewModel محدّدة يتوافق معها المصنع، وذلك باستخدام CreationExtras كمصدر البيانات الأساسي.

    val customFactory = viewModelFactory {
        // The return type of the lambda automatically sets what class this lambda handles
        initializer {
            // Get the Application object from extras provided to the lambda
            val application = checkNotNull(get(ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY))
            HomeViewModel(application)
        }
        initializer {
            val savedStateHandle = createSavedStateHandle()
            DetailViewModel(savedStateHandle)
        }
    }
    
  • يوفّر lifecycle-viewmodel-compose الآن واجهة برمجة تطبيقات viewModel() تستخدم مصنع lambda لإنشاء مثيل ViewModel بدون الحاجة إلى إنشاء ViewModelProvider.Factory مخصّص.

    // Within a @Composable, you can now skip writing a custom Factory
    // and instead write a lambda to do the initialization of your ViewModel
    val detailViewModel = viewModel {
      // This lambda is only called the first time the ViewModel is created
      // and all CreationExtras are available inside the lambda
      val savedStateHandle = createSavedStateHandle()
      DetailViewModel(savedStateHandle)
    }
    
  • دمج SavedStateHandle Compose Saver: تحتوي عناصر lifecycle-viewmodel-compose الآن على واجهات برمجة تطبيقات تجريبية جديدة في "SavedStateHandle.saveable"، ما يتيح سلوك "rememberSaveable" المشابه ومدعوم بـ SavedStateHandle الخاص بـ "ViewModel".

    class ListScreenViewModel(handle: SavedStateHandle): ViewModel() {
        // This value survives both configuration changes and process death and recreation
        val editMode by handle.saveable { mutableStateOf(false) }
    }
    
  • تمت إضافة واجهة برمجة تطبيقات addCloseable() وعملية إنشاء زائدة جديدة تتيح لك إضافة عنصر أو أكثر من عناصر Closeable إلى ViewModel والتي سيتم إغلاقها عند محو ViewModel بدون الحاجة إلى أي عمل يدوي في onCleared().

    على سبيل المثال، لإنشاء نطاق كوروتين يمكنك إدخاله في ViewModel، مع التحكّم فيه من خلال الاختبار، يمكنك إنشاء CoroutineScope لتنفيذ Closeable:

    class CloseableCoroutineScope(
        context: CoroutineContext = SupervisorJob() + Dispatchers.Main.immediate
    ) : Closeable, CoroutineScope {
        override val coroutineContext: CoroutineContext = context
        override fun close() {
            coroutineContext.cancel()
       }
    }
    

    والذي يمكن استخدامه بعد ذلك في الدالة الإنشائية ViewModel مع الحفاظ على العمر نفسه مثل viewModelScope:

    class TestScopeViewModel(
        val customScope: CloseableCoroutineScope = CloseableCoroutineScope()
    ) : ViewModel(customScope) {
        // You can now use customScope in the same way as viewModelScope
    }
    

تغيّرات السلوك

  • عند محاولة نقل "Lifecycle.State" من "INITIALIZED" إلى "DESTROYED"، سيتم دائمًا عرض "IllegalStateException" على كل حال. لمعرفة ما إذا كان هناك مراقب مرفق في Lifecycle أم لا.
  • سيتم محو مراقبي LifecycleRegistry الآن عند الوصول إلى حالة DESTROYED.

الإصدار 2.5.0-rc02

15 حزيران (يونيو) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-rc02. يحتوي الإصدار 2.5.0-rc02 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • لن يتعطّل ViewModelProvider بعد ذلك عند مزج الإصدارات السابقة من تبعيات دورة الحياة المجمّعة فقط مع الإصدارات 2.5 أو الإصدارات الأحدث. (I81a66، b/230454566)

الإصدار 2.5.0-rc01

11 أيار (مايو) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-rc01. يحتوي الإصدار 2.5.0-rc01 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • يعرض MediatorLiveData.addSource() الآن NullPointerException عند تمرير مصدر null بدلاً من نشر مصدر null إلى المراقبين.(Ibd0fb, b/123085232)

الإصدار 2.5.0-beta01

20 نيسان (أبريل) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-beta01. يحتوي الإصدار 2.5.0-beta01 على هذه الالتزامات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة المستخدمين المفوَّضين إلى السمة SavedStateHandle.saveable لاستخدام أسماء السمات كمفاتيح للاحتفاظ بالحالة في SavedStateHandle (I8bb86 وb/225014345).

إصلاح الأخطاء

  • تم إصلاح مشكلة دمج NavHost جهاز NavHost في علامة تبويب أخرى غير أساسية للتنقل في الجزء السفلي إلى IllegalStateException عند استخدام عدة حزم خلفية. (I11bd5، b/228865698)

الإصدار 2.5.0-alpha06

6 نيسان (أبريل) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha06. يحتوي الإصدار 2.5.0-alpha06 على هذه عمليات التنفيذ.

الميزات الجديدة

  • إضافة الحمل الزائد التجريبي على MutableState إلى SavedStateHandle.saveable التعادل مع rememberSaveable (I38cfe، b/224565154)

التغييرات في واجهة برمجة التطبيقات

  • تم عرض الإجابة "CreationExtras" تجريدية بدلاً من الإجابة "مغلقة". (Ib8a7a)

إصلاح الأخطاء

  • تم إصلاح خطأ IllegalStateException: Already attached to lifecycleOwner ناتج عن SavedStateHandleController. (I7ea47، b/215406268)

الإصدار 2.5.0-alpha05

23 آذار (مارس) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha05. يحتوي الإصدار 2.5.0-alpha05 على هذه عمليات التنفيذ.

الميزات الجديدة

  • توفّر وحدة lifecycle-viewmodel-compose الآن SavedStateHandleSaver، وهي واجهة برمجة تطبيقات تجريبية تضمن دمج القيم في SavedStateHandle بشكل صحيح مع حالة المثيل المحفوظة نفسها التي تستخدمها rememberSaveable. (Ia88b7، b/195689777)

التغييرات في واجهة برمجة التطبيقات

  • تم إصلاح مشكلة التوافق في دورة الحياة 2.3 وإصدارات مراحل النشاط الأحدث في Java. (I52c8a، b/219545060)

إصلاح الأخطاء

  • يتيح SavedStateViewFactory الآن استخدام CreationExtras حتى عند إعداده باستخدام SavedStateRegistryOwner. وفي حال توفير إضافات، يتم تجاهل الوسيطات التي تم إعدادها. (I6c43b، b/224844583)

الإصدار 2.5.0-alpha04

9 آذار (مارس) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha04. يحتوي الإصدار 2.5.0-alpha04 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • توفّر SavedStateHandle الآن واجهة برمجة تطبيقات getStateFlow() تعرض رمز Kotlin StateFlow لرصد التغييرات في القيمة باعتبارها كبديل لاستخدام LiveData. (Iad3ab، b/178037961)

الإصدار 2.5.0-alpha03

23 شباط (فبراير) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha03. يحتوي الإصدار 2.5.0-alpha03 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمت إضافة واجهة برمجة تطبيقات addCloseable() وواجهة برمجة تطبيقات جديدة تحميل زائد في الدالة الإنشائية يتيح لك إضافة دالة إنشاء واحدة أو أكثر Closeable عنصر على ViewModel الذي سيتم مغلق عند محو ViewModel بدون الحاجة إلى أي عمل يدوي في onCleared(). (I55ea0)
  • يوفّر تطبيق "lifecycle-viewmodel" الآن InitializerViewModelFactory الذي يسمح لك بإضافة lambda لمعالجتها فئات ViewModel معينة، باستخدام CreationExtras كبيانات أساسية المصدر. (If58fc وb/216687549)
  • توفّر lifecycle-viewmodel-compose الآن واجهة برمجة تطبيقات viewModel() تأخذ مصنع lambda لإنشاء مثيل ViewModel دون يتطلب إنشاء ViewModelProvider.Factory مخصص. (I97fbb، b/216688927)

التغييرات في واجهة برمجة التطبيقات

  • يمكنك الآن إنشاء "ViewModel" باستخدام "CreationExtras" عبر lifecycle-viewmodel-compose (I08887، b/216688927)

تغيّرات السلوك

  • جارٍ محاولة نقل Lifecycle.State من INITIALIZED إلى سيطرح DESTROYED الآن السمة IllegalStateException دائمًا بغض النظر عن لمعرفة ما إذا كان هناك مراقب مرفق في Lifecycle أم لا. (I7c390، b/177924329)
  • سيتم محو مراقبي LifecycleRegistry الآن عند للوصول إلى حالة DESTROYED. (I4f8dd، b/142925860)

الإصدار 2.5.0-alpha02

9 شباط (فبراير) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha02. يحتوي الإصدار 2.5.0-alpha02 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • تم تحويل اللغة SavedStateHandle وSavedStateViewModelFactory إلى لغة Kotlin. وقد أدى ذلك إلى تحسين صلاحية القيم العامة في كلتا الفئتين. (Ib6ce2، وb/216168263، I9647a، b/177667711)
  • يمكن لمعلمة الدالة switchMap LiveData بها الآن مخرجات قابلة للقيم الفارغة. (I40396، b/132923666)
  • تمت إضافة تعليقات توضيحية للإضافات -ktx LiveData باستخدام @CheckResult لفرض استخدام النتيجة عند استدعاء هذه الأخرى. (Ia0f05، b/207325134)

تغيّرات السلوك

  • يخزِّن SavedStateHandle الآن القيمة التلقائية بشكل صحيح عندما لا توجد قيمة للمفتاح المحدد. (I1c6ce، b/178510877)

إصلاح الأخطاء

  • من دورة الحياة 2.4.1: تم التعديل في lifecycle-process للاعتماد على الإصدار 1.1.1 من بدء التشغيل لضمان توفُّر الإصلاحات التي تمنع ProcessLifecycleInitializer من طرح StartupException تلقائيًا. (Ib01df، b/216490724)
  • تظهر الآن رسالة خطأ محسّنة عند توفّر AndroidViewModel صف مخصّص. معلَمات بترتيب غير صحيح ومحاولة إنشاء ViewModel. (I340f7، b/177667711)
  • يمكنك الآن إنشاء نموذج عرض عبر CreationExtras باستخدام AndroidViewModelFactory بدون إعداد تطبيق. (I6ebef، b/217271656)

الإصدار 2.5.0-alpha01

26 يناير 2022

تم طرح androidx.lifecycle:lifecycle-*:2.5.0-alpha01. يحتوي الإصدار 2.5.0-alpha01 على هذه عمليات التنفيذ.

العناصر الإضافية لإنشاء نموذج View

باستخدام هذا الإصدار، نضع الأساس لإعادة هيكلة طريقة إنشاء ViewModel. فبدلاً من مجموعة صلبة من الفئات الفرعية لـ ViewModelProvider.Factory والتي يضيف كل منها وظيفة إضافية (السماح بمَعلمة الدالة الإنشائية Application عبر AndroidViewModelFactory، ما يسمح بمَعلمة الدالة الإنشائية SavedStateHandle من خلال SavedStateViewModelFactory وAbstractSavedStateViewModelFactory، وما إلى ذلك)، سيتم الانتقال إلى عالم المصانع التي لا تتضمّن حالة والتي تعتمد على مفهوم جديد، CreationExtras. (Ia7343، وb/188691010، وb/188541057)

نتيجة لهذا التغيير، لم يعُد يتم إجراء مكالمات مباشرة من قِبل "ViewModelProvider" باستخدام طريقة create(Class<T>) السابقة من ViewModelProvider.Factory. وبدلاً من ذلك، ستنتج عن ذلك حمل زائد جديد من create: create(Class<T>, CreationExtras). وهذا يعني أنّ أي تنفيذ مباشر لمثيل ViewModelProvider.Factory يمكنه الآن الوصول إلى كل من CreationExtras الجديدة التالية:

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY: يوفّر جهاز String هذا إمكانية الوصول إلى المفتاح المخصّص الذي اخترته إلى ViewModelProvider.get().
  • يوفّر ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY إمكانية الوصول إلى الصف Application.
  • يوفّر SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY إمكانية الوصول إلى SavedStateRegistryOwner الذي يتم استخدامه لإنشاء نموذج ViewModel هذا.
  • يوفّر SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY إمكانية الوصول إلى ViewModelStoreOwner الذي يتم استخدامه لإنشاء نموذج ViewModel هذا.
  • توفّر SavedStateHandleSupport.DEFAULT_ARGS_KEY إمكانية الوصول إلى Bundle من الوسيطات التي يجب استخدامها لإنشاء SavedStateHandle.

يتم توفير هذه الميزات الإضافية تلقائيًا عند استخدام النشاط 1.5.0-alpha01 والجزء 1.5.0-alpha01 والتنقّل 2.5.0-alpha01. إذا كنت تستخدم إصدارًا سابقًا من هذه المكتبات، سيكون CreationExtras فارغًا، إذ تمت إعادة كتابة جميع الفئات الفرعية الحالية من ViewModelProvider.Factory لإتاحة مسار الإنشاء القديم الذي كانت تستخدمه في الإصدارات السابقة منها، بالإضافة إلى مسار CreationExtras الذي سيتم استخدامه من الآن فصاعدًا.

تسمح لك CreationExtras هذه إنشاء ViewModelProvider.Factory الذي يمرر المعلومات التي تحتاجها فقط إلى كل ViewModel بدون الاعتماد على تسلسل هرمي دقيق للفئات الفرعية مصانع:

class CustomFactory : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
        return when (modelClass) {
            HomeViewModel::class -> {
                // Get the Application object from extras
                val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                // Pass it directly to HomeViewModel
                HomeViewModel(application)
            }
            DetailViewModel::class -> {
                // Create a SavedStateHandle for this ViewModel from extras
                val savedStateHandle = extras.createSavedStateHandle()
                DetailViewModel(savedStateHandle)
            }
            else -> throw IllegalArgumentException("Unknown class $modelClass")
        } as T
    }
}

نستخدم دالة الإضافة createSavedStateHandle() Kotlin على CreationExtras من SavedStateHandleSupport لإنشاء SavedStateHandle لنموذج ViewModel الذي يحتاج إليها فقط. (Ia6654، b/188541057)

يمكن توفير CreationExtras مخصّص من خلال إلغاء getDefaultViewModelCreationExtras() في ComponentActivity أو Fragment، ما يجعله متاحًا لجهاز ViewModelProvider.Factory المخصّص على شكل حقن مساعِد مضمّن. ستتم إتاحة هذه العناصر الإضافية تلقائيًا في المصنع المخصّص عند استخدامها مباشرةً مع ViewModelProvider أو عند استخدام إضافتَي المواقع by viewModels() وby activityViewModels() Kotlin. (I79f2b، وb/207012584، وb/207012585، وb/207012490)

إصلاح الأخطاء

  • تم إصلاح مشكلة تتعلق بتقديم القيمة التلقائية إلى SavedStateHandle ستظهر مرة أخرى بعد المعالجة الموت والترفيه، حتى لو كان ذلك يتعلق تمت إزالته من SavedStateHandle. نتيجة هذا، لن يدمج SavedStateHandle اللغة التلقائية بعد الآن القيم والقيم التي تمت استعادتها معًا، بدلاً من استخدام القيم التي يتم استردادها كمصدر للحقيقة. (I53a4b)

الإصدار 2.4

الإصدار 2.4.1

9 شباط (فبراير) 2022

تم طرح androidx.lifecycle:lifecycle-*:2.4.1. يحتوي الإصدار 2.4.1 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • الرجوع إلى الإصدار السابق من دورة الحياة 2.5.0-alpha01: تم إصلاح مشكلة متعلّقة بتوفير القيمة التلقائية إلى SavedStateHandle سيظهر مرة أخرى بعد انتهاء العملية الموت والترفيه، حتى لو كان ذلك يتعلق تمت إزالته من SavedStateHandle. نتيجة هذا، لن يدمج SavedStateHandle اللغة التلقائية بعد الآن القيم والقيم التي تمت استعادتها معًا، بدلاً من استخدام القيم التي يتم استردادها كمصدر للحقيقة. (I53a4b)
  • يعتمد تطبيق "lifecycle-process" الآن على الإصدار Androidx Startup 1.1.1 الذي أصلح تراجعًا في موضع تسبب استخدام ProcessLifecycleInitializer في حدوث StartupException. (b/216490724)

الإصدار

27 تشرين الأول (أكتوبر) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.4.0. يحتوي الإصدار 2.4.0 على عمليات الالتزام هذه.

تغييرات مهمة منذ الإصدار 2.3.0

  • تم إيقاف @OnLifecycleEvent نهائيًا. يجب استخدام LifecycleEventObserver أو DefaultLifecycleObserver بدلاً من ذلك.
  • تمت إضافة مكتبة واحدة (androidx.lifecycle:lifecycle-viewmodel-compose). وتوفّر هذه السمة viewModel() قابل للإنشاء وLocalViewModelStoreOwner.
    • تغيير يكسر المصدر: تمت إعادة كتابة ViewModelProvider بلغة Kotlin. لم تعُد الطريقة ViewModelProvider.Factory.create تسمح باستخدام القيم العامة القابلة للقيم الفارغة.
  • تمت إضافة واجهة برمجة تطبيقات الكوروتينات الجديدة إلى androidx.lifecycle:lifecycle-runtime-ktx:
  • Lifecycle.repeatOnLifecycle، واجهة برمجة تطبيقات تنفّذ مجموعة من الرموز في الكوروتين عندما تكون "دورة الحياة" في حالة معيّنة على الأقل سيتم إلغاء الحظر وإعادة إطلاقه عند انتقال مراحل النشاط من وإلى الحالة المستهدَفة.
  • Flow.flowWithLifecycle، واجهة برمجة التطبيقات التي تنبعث منها قيمًا من "مسار عمليات النقل" عندما تكون دورة الحياة في حالة معيّنة على الأقل.
  • تم نقل "DefaultLifecycleObserver" من lifecycle.lifecycle-common-java8 إلى lifecycle.lifecycle-common. لم تعُد الميزة lifecycle.lifecycle-common-java8 توفّر أي وظائف إضافية بالإضافة إلى lifecycle.lifecycle-common، لذا يمكن استبدال الاعتماد عليها بـ lifecycle.lifecycle-common.
  • تم نقل واجهة برمجة التطبيقات غير الكوروتينات من lifecycle-viewmodel-ktx إلى وحدة lifecycle-viewmodel.
  • يستخدم lifecycle-process الآن androidx.startup لإعداد ProcessLifecycleOwner.

    في السابق، كان يتم تنفيذ هذا الإجراء من قِبل "androidx.lifecycle.ProcessLifecycleOwnerInitializer".

    في حال استخدام tools:node="remove"، يتم استخدام ContentProvider في الإعداد. في الماضي، فإنك بحاجة إلى القيام بما يلي بدلاً من ذلك.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (أو)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

الإصدار 2.4.0-rc01

29 أيلول (سبتمبر) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.4.0-rc01 بدون أي تغييرات من الإصدار 2.4.0-beta01. يحتوي الإصدار 2.4.0-rc01 على هذه عمليات التنفيذ.

الإصدار 2.4.0-beta01

15 أيلول (سبتمبر) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.4.0-beta01. يحتوي الإصدار 2.4.0-beta01 على هذه الالتزامات.

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف @OnLifecycleEvent نهائيًا. LifecycleEventObserver أو يجب استخدام DefaultLifecycleObserver بدلاً من ذلك. (I5a8fa)
  • تم نقل defaultLifecycleObserver من androidx.lifecycle.lifecycle-common-java8 إلى. androidx.lifecycle.lifecycle-common لم تعُد androidx.lifecycle.lifecycle-common-java8 توفّر أي وظائف إضافية بالإضافة إلى androidx.lifecycle.lifecycle-common، لذلك يمكن استبدال الاعتماد عليها بـ androidx.lifecycle.lifecycle-common. (I021aa)
  • تم نقل واجهة برمجة التطبيقات غير الكوروتينات من lifecycle-viewmodel-ktx إلى وحدة lifecycle-viewmodel. (I6d5b2)

مساهمة خارجية

  • شكرًا dmitrilc على إصلاح نوع في مستندات ViewModel. (#221)

الإصدار 2.4.0-alpha03

4 آب (أغسطس) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.4.0-alpha03. يحتوي الإصدار 2.4.0-alpha03 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • تغيير يكسر المصدر: تمت إعادة كتابة ViewModelProvider بلغة Kotlin. لم تعُد طريقة "ViewModelProvider.Factory.create" تسمح باستخدام القيم القابلة للقيم الفارغة. عامة. (I9b9f6)

تغييرات السلوك

  • يتم الآن استدعاء Lifecycle.repeatOnLifecycle: block بشكل تسلسلي دائمًا عند تكرار التنفيذ. (Ibab33)

مساهمة خارجية

  • شكرًا chao2zhang على إصلاح مقتطفات الرموز في مستندات repeatOnLifecycle. #205

الإصدار 2.4.0-alpha02

16 حزيران (يونيو) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.4.0-alpha02. يحتوي الإصدار 2.4.0-alpha02 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمت إضافة فحص جديد من أداة الوبر RepeatOnLifecycleWrongUsage إلى lifecycle-runtime-ktx لرصد استخدام repeateOnLifecycle بشكل غير صحيح في onStart() أو onResume(). (706078، b/187887400)

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة واجهة برمجة التطبيقات LifecycleOwner.addRepeatingJob في لصالح Lifecycle.repeatOnLifecycle يحترم المنظمة التزامن ويسهل تفسيرها. (I4a3a8)
  • اجعل ProcessLifecycleInitializer متاحًا للجميع حتى يمكن لـ androidx.startup.Initializer الأخرى استخدام هذه العناصر كتبعيات. (I94c31)

إصلاح الأخطاء

  • تم إصلاح مشكلة في فحص أداة Lint NullSafeMutableLiveData عندما يحتوي الحقل على مفاتيح تعديل. (#147، b/183696616)
  • تم إصلاح مشكلة أخرى في فحص الوبر NullSafeMutableLiveData عند استخدام العامة. (#161، b/184830263)

مساهمة خارجية

الإصدار 2.4.0-alpha01

24 آذار (مارس) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.4.0-alpha01. يحتوي الإصدار 2.4.0-alpha01 على هذه عمليات التنفيذ.

تغييرات السلوك

  • يستخدم lifecycle-process الآن androidx.startup لإعداد ProcessLifecycleOwner.

    في السابق، كان يتم تنفيذ هذا الإجراء من قِبل "androidx.lifecycle.ProcessLifecycleOwnerInitializer".

    في حال استخدام tools:node="remove"، يتم استخدام ContentProvider في الإعداد. في الماضي، فإنك بحاجة إلى القيام بما يلي بدلاً من ذلك.

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (أو)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة تطبيقات Flow.flowWithLifecycle تنبعث منها القيم من عملية مسار التنفيذ عندما تكون مراحل النشاط في حالة محدّدة على الأقل، وذلك باستخدام واجهة برمجة التطبيقات Lifecycle.repeatOnLifecycle. وهذا بديل لواجهة برمجة تطبيقات LifecycleOwner.addRepeatinJob الجديدة أيضًا. (I0f4cd)

إصلاح الأخطاء

  • من دورة الحياة 2.3.1: يمكن الآن لقاعدة NonNullableMutableLiveData Lint بشكل صحيح التمييز بين متغيرات الحقل ذات قابلية القيم الفارغة المختلفة. (b/169249668)

الإصدار 1.0.0 من نموذج Compose لمراحل النشاط

الإصدار 1.0.0-alpha07

16 حزيران (يونيو) 2021

تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07. يحتوي الإصدار 1.0.0-alpha07 على هذه عمليات التنفيذ.

كسر التغييرات في واجهة برمجة التطبيقات

  • يحتاج viewModel() الآن إلى اختيارية ViewModelStoreOwner، لتسهيل العمل مع مالكين بخلاف LocalViewModelStoreOwner. على سبيل المثال، يمكنك الآن استخدام viewModel(navBackStackEntry) لاسترداد نموذج عرض مرتبط برسم بياني معيّن للتنقّل. (I2628d، b/188693123)

الإصدار 1.0.0-alpha06

2 حزيران (يونيو) 2021

تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha06. يحتوي الإصدار 1.0.0-alpha06 على هذه عمليات التنفيذ.

تم تعديلها لتكون متوافقة مع إصدار Compose 1.0.0-beta08.

الإصدار 1.0.0-alpha05

18 أيار (مايو) 2021

تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha05. يحتوي الإصدار 1.0.0-alpha05 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تم تعديلها لتكون متوافقة مع إصدار Compose 1.0.0-beta07.

إصلاح الأخطاء

  • يمكن الاطلاع على ملفات AndroidManifest من ملف ui-test-manifest تتوافق أداة ui-tooling-data الآن مع نظام التشغيل Android 12 (I6f9de وb/184718994).

الإصدار 1.0.0-alpha04

7 نيسان (أبريل) 2021

تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha04. يحتوي الإصدار 1.0.0-alpha04 على عمليات التنفيذ هذه.

التغييرات في التبعية

  • يسمح هذا الإصدار بـ androidx.hilt:hilt-navigation-compose وandroidx.navigation:navigation-compose. لمزامنة التبعيات على androidx.compose.compiler:compiler:1.0.0-beta04 وandroidx.compose.runtime:runtime:1.0.0-beta04. بالنسبة إلى الإصدار 1.0.0، يجب تطابق برنامج التجميع مع بيئة التشغيل.

الإصدار 1.0.0-alpha03

10 آذار (مارس) 2021

تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03. يحتوي الإصدار 1.0.0-alpha03 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • تُرجع الدالة LocalViewModelStoreOwner.current الآن قيمة ViewModelStoreOwner القابلة للقيم الفارغة لتحديد ما إذا كان ViewModelStoreOwner متاحًا في الوقت الحالي المقطوعة الموسيقية. واجهات برمجة التطبيقات التي تتطلّب السمة ViewModelStoreOwner، مثل كـ viewModel() وNavHost، لا تزال تطرح استثناء إذا لم يتم ضبط ViewModelStoreOwner. (Idf39a)

الإصدار 1.0.0-alpha02 من Lifecycle-Viewmodel-Compose

24 شباط (فبراير) 2021

تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02. يحتوي الإصدار 1.0.0-alpha02 على عمليات التنفيذ هذه.

التغييرات في واجهة برمجة التطبيقات

  • تتضمن الدالة LocalViewModelStoreOwner الآن دالة provides التي يمكنها مع CompositionLocalProvider، لتحلّ محل asProvidableCompositionLocal(). (I45d24)

الإصدار 1.0.0-alpha01 من Lifecycle-Viewmodel-Compose

10 شباط (فبراير) 2021

تم طرح androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01. يحتوي الإصدار 1.0.0-alpha01 على عمليات التنفيذ هذه.

الميزات الجديدة

  • تم نقل عنصر "viewModel()" القابل للإنشاء و"LocalViewModelStoreOwner" من "androidx.compose.ui.viewinterop" إلى هذا العنصر في حزمة "androidx.lifecycle.viewmodel.compose". (I7a374)

الإصدار 2.3.1

الإصدار 2.3.1 من مراحل النشاط

24 آذار (مارس) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.3.1. يحتوي الإصدار 2.3.1 على هذه الالتزامات.

إصلاح الأخطاء

  • يمكن الآن استخدام قاعدة Lint NonNullableMutableLiveData بشكل صحيح التمييز بين متغيرات الحقل ذات قابلية القيم الفارغة المختلفة. (b/169249668)

الإصدار 2.3.0

الإصدار 2.3.0

10 شباط (فبراير) 2021

تم طرح androidx.lifecycle:lifecycle-*:2.3.0. يحتوي الإصدار 2.3.0 على هذه الالتزامات.

التغييرات الرئيسية منذ الإصدار 2.2.0

  • إتاحة SavedStateHandle للفئات غير القابلة للتسليم: يتيح SavedStateHandle الآن التسلسل الكسول من خلال السماح لك بطلب setSavedStateProvider() لمفتاح معيّن، مع توفير SavedStateProvider الذي سيعاود الاتصال بـ saveState() عندما يُطلَب من SavedStateHandle حفظ حالته. راجِع حفظ الفئات غير القابلة للنقل.
  • تنفيذ سلوك مراحل النشاط:
    • تفرض LifecycleRegistry الآن DESTROYED كحالة طرفية.
    • يتحقّق LifecycleRegistry الآن من طلب طرقه في سلسلة المحادثات الرئيسية. ودائمًا ما كان ذلك شرطًا لمراحل نشاط الأنشطة والأجزاء وما إلى ذلك. وأدت إضافة مراقبين من سلاسل محادثات غير رئيسية إلى صعوبة رصد الأعطال في وقت التشغيل. بالنسبة إلى عناصر LifecycleRegistry التي تمتلكها المكوّنات الخاصة بك، يمكنك بشكلٍ صريح إيقاف عمليات التحقق باستخدام LifecycleRegistry.createUnsafe(...)، ولكن عليك بعد ذلك التأكد من تطبيق مزامنة مناسبة عند الوصول إلى LifecycleRegistry من سلاسل محادثات مختلفة.
  • أدوات مساعدة الأحداث وحالة دورة الحياة: تمت إضافة طرق مساعدة ثابتة تابعة لـ downFrom(State) وdownTo(State) وupFrom(State) وupTo(State) إلى Lifecycle.Event لإنشاء Event وفقًا لاتجاه State واتجاه الانتقال. تمت إضافة الطريقة getTargetState() التي توفّر State التي ستنتقل إليها دورة الحياة بعد Event مباشرةً.
  • withStateAtLeast: تمت إضافة واجهات برمجة تطبيقات Lifecycle.withStateAtLeast التي تنتظر مراحل النشاط وتشغِّل مجموعة غير معلّقة من الرموز بشكل متزامن عند تغيير الحالة، ثم تُستأنف مع النتيجة. تختلف واجهات برمجة التطبيقات هذه عن طُرق when* الحالية لأنّها لا تسمح بتشغيل رمز التعليق ولا تستخدم مُرسِلاً مخصّصًا. (aosp/1326081)
  • واجهات برمجة تطبيقات ViewTree: تتيح لك واجهة برمجة التطبيقات ViewTreeLifecycleOwner.get(View) وViewTreeViewModelStoreOwner.get(View) الجديدة استرداد LifecycleOwner وViewModelStoreOwner اللذين يحتويان على ذلك، على التوالي، في ما يتعلّق بمثيل View. يجب الترقية إلى النشاط 1.2.0 وFragment 1.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)

مساهمة خارجية

الإصدار 2.3.0-beta01

1 تشرين الأول (أكتوبر) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-beta01. يحتوي الإصدار 2.3.0-beta01 على هذه الالتزامات.

التغييرات في واجهة برمجة التطبيقات

  • إضافة LiveData.observe() Kotlin اللازمة لاستخدام بناء جملة lambda لأنها ليس ضروريًا عند استخدام Kotlin 1.4. (I40d3f)

إصلاح الأخطاء

التغييرات التي تطرأ على المستندات

  • تم تعديل أداة إنشاء liveData ومستندات asLiveData() لتضمين تفاصيل حول تغيير قيم المهلة المحددة. (aosp/1122324)

الإصدار 2.3.0-alpha07

19 آب (أغسطس) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha07. يحتوي الإصدار 2.3.0-alpha07 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح مشكلة تعطُّل في فحص أداة Lint في NullSafeMutableLiveData. (aosp/1395367)

الإصدار 2.3.0-alpha06

22 تموز (يوليو) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha06. يحتوي الإصدار 2.3.0-alpha06 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمت إضافة طرق المساعدة الثابتة للقيم downFrom(State) وdownTo(State) وupFrom(State) وupTo(State) إلى Lifecycle.Event لإنشاء Event وفقًا لاتجاه State واتجاه النقل. تمت إضافة الطريقة getTargetState() التي توفّر State التي ستنتقل إليها دورة الحياة بعد Event مباشرةً. (I00887)
  • تمت إضافة واجهات برمجة تطبيقات Lifecycle.withStateAtLeast التي تنتظر مراحل النشاط وتنفيذ مجموعة رموز غير معلّقة بشكل متزامن عند تغيير الحالة، ثم استئناف العملية. مع النتيجة. تختلف واجهات برمجة التطبيقات هذه عن طُرق when* الحالية لأنّها لا تسمح بتشغيل رمز التعليق ولا تستخدم مُرسِلاً مخصّصًا. (aosp/1326081)

تغييرات السلوك

  • يفرض تطبيق LifecycleRegistry الآن حالة DESTROYED كحالة طرفية. (I00887)
  • يتحقّق LifecycleRegistry الآن من طلب طرقه في سلسلة المحادثات الرئيسية. ودائمًا ما كان ذلك شرطًا لمراحل نشاط الأنشطة والأجزاء وما إلى ذلك. وأدّى إضافة مراقبين من سلاسل المحادثات غير الرئيسية إلى صعوبة رصد الأعطال في وقت التشغيل. بالنسبة إلى عناصر LifecycleRegistry التي تمتلكها المكوّنات الخاصة بك، يمكنك إيقاف عمليات التحقّق صراحةً باستخدام LifecycleRegistry.createUnsafe(...)، ولكن عليك بعد ذلك التأكّد من تنفيذ مزامنة مناسبة عند الوصول إلى LifecycleRegistry هذا من سلاسل محادثات مختلفة (Ie7280، وb/137392809).

إصلاح الأخطاء

  • تم إصلاح عطل في NullSafeMutableLiveData. (b/159987480)
  • تم إصلاح ObsoleteLintCustomCheck لفحوصات Lint المضمّنة مع lifecycle-livedata-core-ktx (وعلى وجه التحديد NullSafeMutableLiveData). (b/158699265)

الإصدار 2.3.0-alpha05

24 حزيران (يونيو) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha05. يحتوي الإصدار 2.3.0-alpha05 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • يتعامل LiveData الآن بشكل أفضل مع حالات إعادة المشاركة، وبالتالي يتم تجنُّب المكالمات المكرّرة إلى onActive() أو onInactive(). (b/157840298)
  • تم إصلاح المشكلة المتمثلة في عدم تشغيل عمليات فحص Lint عند استخدام Android Studio 4.1 Canary 6 أو إصدار أحدث. (aosp/1331903)

الإصدار 2.3.0-alpha04

10 حزيران (يونيو) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha04. يحتوي الإصدار 2.3.0-alpha04 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح عطل في فحص أداة Lint في NonNullableMutableLiveData. (b/157294666)
  • تشمل عملية فحص Lint NonNullableMutableLiveData الآن عددًا أكبر بكثير من الحالات التي تم فيها ضبط قيمة null على MutableLiveData مع مَعلمة نوع غير فارغة. (b/156002218)

الإصدار 2.3.0-alpha03

20 أيار (مايو) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha03. يحتوي الإصدار 2.3.0-alpha03 على هذه عمليات التنفيذ.

الميزات الجديدة

  • يتيح SavedStateHandle الآن استخدام التسلسل الكسول من خلال السماح لك بالاتصال بـ setSavedStateProvider() للحصول على مفتاح معيّن، مع توفير SavedStateProvider الذي سيعاود الاتصال بـ saveState() عندما يُطلَب من SavedStateHandle حفظ حالته. (b/155106862)
  • تسمح لك واجهة برمجة تطبيقات ViewTreeViewModelStoreOwner.get(View) الجديدة باسترداد واجهة برمجة التطبيقات ViewModelStoreOwner التي تحتوي على مثيل View. يجب الترقية إلى النشاط 1.2.0-alpha05 والسمة 1.3.0-alpha05 وAppCompat 1.3.0-alpha01 لتعبئة هذه البيانات بشكل صحيح. تم إدراج إضافة findViewModelStoreOwner() Kotlin في lifecycle-viewmodel-ktx. (aosp/1295522)

إصلاح الأخطاء

الإصدار 2.3.0-alpha02

29 نيسان (أبريل) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha02. يحتوي الإصدار 2.3.0-alpha02 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • يسمح لك SavedStateViewModelFactory الآن بتمرير قيمة Application فارغة إلى الدالة الإنشائية الخاصة به لتقديم حالات دعم أفضل عندما لا يكون أحدها متاحًا بسهولة ولا يلزم التوافق مع AndroidViewModel. (aosp/1285740)

إصلاح الأخطاء

  • تم تحسين أداء التشغيل على البارد من خلال تجنُّب تعذُّر التحقّق من الصف على واجهة برمجة التطبيقات 28 والأجهزة الأقدم. (aosp/1282118)

الإصدار 2.3.0-alpha01

4 آذار (مارس) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.3.0-alpha01. يحتوي الإصدار 2.3.0-alpha01 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تسمح لك واجهة برمجة تطبيقات ViewTreeLifecycleOwner.get(View) الجديدة باسترداد واجهة برمجة التطبيقات LifecycleOwner التي تحتوي على مثيل View. يجب الترقية إلى النشاط 1.2.0-alpha01 والقسم 1.3.0-alpha01 لتعبئة هذه البيانات بشكل صحيح. تتوفر إضافة findViewTreeLifecycleOwner Kotlin في lifecycle-runtime-ktx. (aosp/1182361، aosp/1182956)
  • تمت إضافة عملية فحص Lint جديدة تحذّرك عند ضبط قيمة null في MutableLiveData تم تحديدها في Kotlin على أنّها غير خالية. تتوفّر هذه الميزة عند استخدام العنصر livedata-core-ktx أو livedata-ktx. (aosp/1154723 وaosp/1159092)
  • تتوفّر عناصر lifecycle-runtime-testing جديدة توفّر TestLifecycleOwner لتنفيذ LifecycleOwner وتوفر Lifecycle قابل للتغيير بشكل آمن في سلسلة المحادثات. (aosp/1242438)

إصلاح الأخطاء

  • أصبح للعنصر lifecycle-runtime اسم حزمة فريد. (aosp/1187196)

الإصدار 2.2.0

الإصدار 2.2.0 من ViewModel-Savedstate

5 شباط (فبراير) 2020

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0. يحتوي الإصدار 2.2.0 على عمليات الالتزام هذه.

تشارك ميزة Lifecycle ViewViewState الآن النسخة نفسها التي تستخدمها عناصر دورة الحياة الأخرى. سلوك 2.2.0 مماثل لسلوك 1.0.0.

الإصدار 2.2.0

22 كانون الثاني (يناير) 2020

تم طرح androidx.lifecycle:lifecycle-*:2.2.0. يحتوي الإصدار 2.2.0 على عمليات الالتزام هذه.

تغييرات مهمة منذ الإصدار 2.1.0

  • دمج الكوروتينات في دورة الحياة: تضيف عناصر lifecycle-runtime-ktx الجديدة تكاملاً بين الكوروتينات في Lifecycle وKotlin. تم أيضًا توسيع lifecycle-livedata-ktx للاستفادة من الكوروتينات. لمعرفة مزيد من التفاصيل، يمكنك الاطّلاع على استخدام الكوروتينات في لغة Kotlin مع المكونات الهندسية.
  • إيقاف ViewModelProviders.of() نهائيًا: تم إيقاف ViewModelProviders.of() نهائيًا. يمكنك تمرير Fragment أو FragmentActivity إلى الدالة الإنشائية الجديدة ViewModelProvider(ViewModelStoreOwner) لتحقيق الوظيفة نفسها عند استخدام السمة 1.2.0.
  • إيقاف lifecycle-extensions نهائيًا: بسبب الإيقاف النهائي لـ ViewModelProviders.of() أعلاه، يشير هذا الإصدار إلى إيقاف آخر واجهة برمجة تطبيقات نهائيًا في lifecycle-extensions، ومن المفترض أن يتم الآن اعتبار هذه العناصر متوقّفة نهائيًا. ننصحك بشدة بالاعتماد على عناصر مراحل النشاط المحدّدة التي تحتاج إليها (مثل lifecycle-service في حال استخدام LifecycleService وlifecycle-process إذا كنت تستخدم ProcessLifecycleOwner) بدلاً من lifecycle-extensions لأنّه لن يتم طرح إصدار 2.3.0 في المستقبل من lifecycle-extensions.
  • معالج التعليقات التوضيحية التزايدية في Gradle: يكون معالج التعليقات التوضيحية في مراحل النشاط متزايدًا بشكل تلقائي. إذا كان تطبيقك مكتوبًا بلغة البرمجة Java 8، يمكنك استخدام DefautLifecycleObserver بدلاً من ذلك؛ وإذا كان تمت كتابته بلغة البرمجة Java 7، ويمكنك استخدام LifecycleEventObserver.

الإصدار 2.2.0-rc03

4 كانون الأول (ديسمبر) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.2.0-rc03. يحتوي الإصدار 2.2.0-rc03 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح عطل كان يحدث عند تخزين ViewModel نموذجي في ViewModelStore وتم الاستعلام عنه لاحقًا باستخدام المصنع التلقائي.
  • يمكنك إصلاح استخدام Dispatchers.Main.immediate في launchWhenCreated والطرق المشابهة ليتم طلبها بشكلٍ متزامن أثناء حدث دورة الحياة ذي الصلة. (aosp/1156203)

المساهمات الخارجية

  • نشكر "أندرس يارليبرغ" على مساهمتك في حلّ المشكلة. (aosp/1156203)
  • نشكر "فسيفولود تولستوبياتوف" من Jetbrains على مراجعة عملية التنفيذ المضمّنة.

التغييرات في التبعية

  • تعتمد إضافات مراحل النشاط الآن على الجزء 1.2.0-rc03.

الإصدار 2.2.0-rc02

7 تشرين الثاني (نوفمبر) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.2.0-rc02. يحتوي الإصدار 2.2.0-rc02 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح خطأ في إعداد Proguard للمكتبة أثر في الأجهزة التي تعمل بالإصدار 28 من واجهة برمجة التطبيقات أو الإصدارات الأحدث إذا كانت واجهة برمجة التطبيقات المستهدَفة أقل من 29. (b/142778206)

الإصدار 2.2.0-rc01

23 تشرين الأول (أكتوبر) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.2.0-rc01. يحتوي الإصدار 2.2.0-rc01 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح مشكلة تشغيل launchWhenCreated والطرق ذات الصلة بعد إطار واحد بعد فترة مراحل النشاط المرتبطة بسبب استخدام Dispatchers.Main بدلاً من Dispatchers.Main.immediate. (aosp/1145596)

المساهمات الخارجية

  • نشكر نيكلاس أنسمان على المساهمة في إصلاح المشكلة. (aosp/1145596)

الإصدار 2.2.0-beta01

9 تشرين الأول (أكتوبر) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.2.0-beta01. يحتوي الإصدار 2.2.0-beta01 على هذه الالتزامات.

إصلاح الأخطاء

  • تم إصلاح الانحدار الذي تم تقديمه في رحلة في الإصدار 2.2.0-alpha05 بترتيب ProcessLifecycleOwner بدءًا من LifecycleOwner بالنسبة إلى النشاط بدءًا من تاريخ البدء واستئنافه على أجهزة Android 10. (aosp/1128132)
  • تم إصلاح الانحدار الذي تم تقديمه في دورة الحياة 2.2.0-alpha05 والذي يتسبب في حدوث NullPointerException عند استخدام الإصدار 2.0.0 أو 2.1.0 من lifecycle-process. (b/141536990)

الإصدار 2.2.0-alpha05

18 أيلول (سبتمبر) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha05. يحتوي الإصدار 2.2.0-alpha05 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم إصلاح شرط السباق في أداة إنشاء البيانات المباشرة للكوروتين. b/140249349

الإصدار 2.2.0-alpha04

5 أيلول (سبتمبر) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha04. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الميزات الجديدة

  • يستخدم lifecycleScope وwhenCreated وwhenStarted وwhenResumed وviewModelScope والتنفيذ الأساسي لـ liveData الآن Dispatchers.Main.immediate بدلاً من Dispatchers.Main. (b/139740492)

المساهمات الخارجية

  • نشكر "نيكلاس أنسمان" على المساهمة في الانتقال إلى Dispatchers.Main.immediate. (aosp/1106073)

الإصدار 2.2.0-alpha03

7 آب (أغسطس) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.2.0-alpha03. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الميزات الجديدة

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف ViewModelProviders.of() نهائيًا. ويمكنك تمرير Fragment أو FragmentActivity إلى الدالة الإنشائية الجديدة لـ ViewModelProvider(ViewModelStoreOwner) لتحقيق الوظيفة نفسها. (aosp/1009889)

الإصدار 2.2.0-alpha02

2 تموز (يوليو) 2019

تم طرح androidx.lifecycle:*:2.2.0-alpha02. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

التغييرات في واجهة برمجة التطبيقات

  • تم استبدال LiveDataScope.initialValue بـ LiveDataScope.latestValue الذي سيتتبّع القيمة الحالية المنبعثة من مجموعة liveData.
  • تمت إضافة حمل زائد جديد إلى أداة إنشاء liveData التي تتلقّى مَعلمة timeout من النوع Duration.

الإصدار 2.2.0-alpha01

7 أيار (مايو) 2019

تم طرح androidx.lifecycle:*:2.2.0-alpha01. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الميزات الجديدة

  • يضيف هذا الإصدار ميزات جديدة تُتيح استخدام الكوروتينات في لغة Kotlin في دورة حياة كل من Lifecycle وLiveData. يمكنك العثور على مستندات مفصّلة حول هذه السياسات هنا.

الإصدار 1.0.0 من ViewModel-SavedState

الإصدار 1.0.0

22 كانون الثاني (يناير) 2020

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0. يحتوي الإصدار 1.0.0 على عمليات التنفيذ هذه.

ميزات مهمة في الإصدار 1.0.0

  • تمت إضافة فئة SavedStateHandle جديدة. يتيح هذا الإجراء لصفوف "ViewModel" الوصول إلى الحالة المحفوظة والمساهمة فيها. يمكن استلام هذا الكائن في الدالة الإنشائية لفئة ViewModel والمصانع التي توفّرها شركة Fragments بشكل تلقائي، وسيعمل AppCompatActivity على إدخال "SavedStateHandle" تلقائيًا.
  • تمت إضافة AbstractSavedStateViewModelfactor. تتيح لك هذه الميزة إنشاء مصانع مخصّصة لجهاز ViewModel ومنحها إذن الوصول إلى "SavedStateHandle".

ViewModel-Savedstate الإصدار 1.0.0-rc03

4 كانون الأول (ديسمبر) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03. يحتوي الإصدار 1.0.0-rc03 على هذه عمليات التنفيذ.

التغييرات في التبعية

  • يعتمد عرض النموذج المحفوظ لدورة الحياة الآن على "دورة الحياة" 2.2.0-rc03.

Viewmodel-Savedstate الإصدار 1.0.0-rc02

7 تشرين الثاني (نوفمبر) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02. يحتوي الإصدار 1.0.0-rc02 على عمليات التنفيذ هذه.

التغييرات في التبعية

  • يعتمد الآن على دورة الحياة 2.2.0-rc02.

ViewModel-SavedState الإصدار 1.0.0-rc01

23 تشرين الأول (أكتوبر) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 بدون أي تغييرات من 1.0.0-beta01. يحتوي الإصدار 1.0.0-rc01 على عمليات التنفيذ هذه.

ViewModel-Savedstate الإصدار 1.0.0-beta01

9 تشرين الأول (أكتوبر) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01. يحتوي الإصدار 1.0.0-beta01 على عمليات التنفيذ هذه.

إصلاح الأخطاء

  • تم إصلاح مشكلة كانت نتيجة الوصول إلى نموذج ViewState View للمرة الأولى في Activity.onActivityResult() سيؤدي إلى IllegalStateException. (b/139093676)
  • تم إصلاح IllegalStateException عند استخدام AbstractSavedStateViewModelFactory. (b/141225984)

ViewModel-SavedState الإصدار 1.0.0-alpha05

18 أيلول (سبتمبر) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05. يحتوي الإصدار 1.0.0-alpha05 على عمليات التنفيذ هذه.

التغييرات في واجهة برمجة التطبيقات

  • لم تعد SavedStateViewModelFactory توسِّع نطاق AbstractSavedStateViewModelFactory، ولا يتم إنشاء SavedStateHandle إلا لنماذج ViewModels التي طلبت الحصول عليها (aosp/1113593).

ViewModel-SavedState الإصدار 1.0.0-alpha03

7 آب (أغسطس) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

تغييرات قد تؤدي إلى أعطال

  • لم تعُد الدالة lifecycle-viewmodel-savedstate تعتمد على fragment، وتمت إزالة دالتَي الإنشاء SavedStateViewModelFactory(Fragment) وSavedStateViewModelFactory(FragmentActivity) المرتبطتين. وبدلاً من ذلك، أصبح SavedStateViewModelFactory هو المصنع التلقائي لكلّ من النشاط 1.1.0-alpha02 والقسم 1.2.0-alpha02 والتنقّل 2.2.0-alpha01. (b/135716331)

الإصدار ViewModel-SavedState 1.0.0-alpha02

2 تموز (يوليو) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الميزات الجديدة

  • تمت إضافة حِمل زائد SavedStateHandle.getLiveData() يقبل قيمة تلقائية.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تسمية "SavedStateVMFactory" إلى "SavedStateViewModelFactory".
  • تمت إعادة تسمية "AbstractSavedStateVMFactory" إلى "AbstractSavedStateViewModelFactory".

ViewModel-Savedstate الإصدار 1.0.0-alpha01

13 آذار (مارس) 2019

تم طرح androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01. يمكن العثور على سجلّ التنفيذ الكامل لهذا الإصدار الأولي هنا.

الميزات الجديدة

  • الآن يمكن لـ ViewModels المساهمة في الدالة savedstate. لتنفيذ ذلك، يمكنك استخدام المصنع SavedStateVMFactory الذي تم طرحه حديثًا لنموذج العرض، ويجب أن يحتوي ViewModel على دالة إنشاء تستقبل SavedStateHandleكائن كمَعلمة.

الإصدار

تغييرات مهمة منذ الإصدار 2.0.0

  • تمت إضافة LifecycleEventObserver للحالات التي تحتاج فيها إلى بث الأحداث في مراحل النشاط. وهي واجهة برمجة تطبيقات عامة بدلاً من فئة GenericLifecycleObserver مخفية.
  • تمت إضافة إضافات ktx لـ LiveData.observe طريقة وTransformations.* طريقة.
  • تمت إضافة Transformations.distinctUntilChanged، ما يؤدي إلى إنشاء كائن LiveData جديد لا يُصدر قيمة إلى أن يتم تغيير قيمة LiveData المصدر.
  • تمت إضافة دعم الكوروتين في ViewModels من خلال إضافة خاصية الإضافة ViewModel.viewModelScope.

الإصدار

5 أيلول (سبتمبر) 2019

تم طرح androidx.lifecycle:lifecycle-*:2.1.0. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الإصدار 2.1.0-rc01

2 تموز (يوليو) 2019

تم طرح androidx.lifecycle:*:2.1.0-rc01 بدون أي تغييرات من androidx.lifecycle:*:2.1.0-beta01. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الإصدار 2.1.0-beta01

7 أيار (مايو) 2019

تم طرح androidx.lifecycle:*:2.1.0-beta01. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الميزات الجديدة

  • تنتقل مراحل النشاط إلى الإصدار التجريبي: واجهة برمجة التطبيقات التي تم تقديمها في الإصدارات الأولية السابقة مثل وظائف إضافة liveData لعمليات التحويل والملاحظات وإعداد ViewModel من خلال تفويض المواقع وغيرها من البيانات ثابتة ولن تتغير.

الإصدار 2.1.0-alpha04

3 نيسان (أبريل) 2019

تم طرح androidx.lifecycle:*:2.1.0-alpha04. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

التغييرات في واجهة برمجة التطبيقات

  • تغيير قد يؤدي إلى عطل: تم تغيير واجهة برمجة التطبيقات الأساسية وراء by viewModels() وby activityViewModels() لتتيح ViewModelStore مباشرةً، بدلاً من ViewModelStoreOwner فقط. (aosp/932932)

الإصدار 2.1.0-alpha03

13 آذار (مارس) 2019

تم طرح androidx.lifecycle:*:2.1.0-alpha03. يمكن الاطّلاع هنا على القائمة الكاملة لخطط الاشتراك المضمَّنة في هذا الإصدار.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة الحقل "ViewModelProvider.KeyedFactory". لم تتوافق الواجهة الثانية بالإضافة إلى ViewModelProvider.Factory بشكل جيد مع ميزات جديدة كتفويض الموقع في Kotlin by viewmodels {}. (aosp/914133)

الإصدار 2.1.0-alpha02

30 كانون الثاني (يناير) 2019

تم طرح androidx.lifecycle 2.1.0-alpha02.

التغييرات في واجهة برمجة التطبيقات

  • يحتوي LifecycleRegistry الآن على طريقة setCurrentState() تحل محل طريقة setState() التي تم إيقافها نهائيًا الآن. (aosp/880715)

إصلاح الأخطاء

  • تم إصلاح مشكلة تعطُّل مثيلات نماذج ViewModel الوهمية عند محو مساحة ViewModelStore التي تحتوي على الرمز. b/122273087

الإصدار 2.1.0-alpha01

17 كانون الأول (ديسمبر) 2018

تم طرح androidx.lifecycle 2.1.0-alpha01.

الميزات الجديدة

  • تمت إضافة LifecycleEventObserver للحالات التي تحتاج فيها إلى بث الأحداث في مراحل النشاط. وهي واجهة برمجة تطبيقات عامة بدلاً من صف GenericLifecycleObserver مخفي.
  • تمت إضافة إضافات ktx لـ LiveData.observe طريقة وTransformations.* طريقة.
  • تمت إضافة الطريقة Transformations.distinctUntilChanged. تنشئ الأداة كائن LiveData جديدًا لا يُصدر أي قيمة إلى أن يتم تغيير قيمة LiveData المصدر.
  • تمت إضافة خاصية إتاحة الكوروتين في ViewModels: تمت إضافة خاصية الإضافة "ViewModel.viewModelScope".
  • تمت إضافة ViewModelProvider.KeyedFactory، وهو مصنع لنماذج ViewViews التي تتلقى key وClass بطريقة create.

الإصدار 2.0.0

الإصدار 2.0.0

21 أيلول (سبتمبر) 2018

تم إطلاق دورة الحياة 2.0.0 مع إصلاح أخطاء واحدة من 2.0.0-rc01 في ViewModel.

إصلاح الأخطاء

  • تم إصلاح قاعدة ViewModel Proguard التي أزالت التركيبات الإنشائية بشكلٍ غير صحيح b/112230489

الإصدار 2.0.0-beta01

2 تموز (يوليو) 2018

إصلاح الأخطاء

  • تم إصلاح قاعدة Proguard لـ LifecycleObserver للاحتفاظ بعمليات التنفيذ فقط، وليس الواجهات الفرعية b/71389427
  • تم إصلاح قواعد حماية ViewModel للسماح بالتشويش والتقليص.

إصدارات ما قبل AndroidX

بالنسبة إلى الإصدارات التي تسبق AndroidX والتي تتبعها قبل ذلك، قم بتضمين الاعتماديات التالية:

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

الإصدار 1.1.1

21 آذار (مارس) 2018

تغيير واحد صغير فقط: تم نقل android.arch.core.util.Function من arch:runtime إلى arch:common. ويسمح هذا الإجراء باستخدامه بدون تبعية بيئة التشغيل، على سبيل المثال في paging:common أدناه.

lifecycle:common هو عنصر يعتمد على lifecycle:runtime، لذا لا يؤثر هذا التغيير في lifecycle:runtime مباشرةً، بل فقط الوحدات التي تعتمد بشكل مباشر على lifecycle:common، كما هو الحال مع عملية الترحيل.

الإصدار 1.1.0

22 كانون الثاني (يناير) 2018

التغييرات في الحزمة

تتوفر الآن تبعيات جديدة أصغر بكثير:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

التغييرات في واجهة برمجة التطبيقات

  • تمت الآن إزالة خدمتَي LifecycleActivity وLifecycleFragment المتوقفتَين نهائيًا - يُرجى استخدام FragmentActivity أو AppCompatActivity أو دعم Fragment.
  • تمت إضافة @NonNull تعليق توضيحي إلى ViewModelProviders وViewModelStores.
  • تم إيقاف الدالة الإنشائية ViewModelProviders نهائيًا - يُرجى استخدام طرقها الثابتة مباشرةً
  • تم إيقاف ViewModelProviders.DefaultFactory نهائيًا - يُرجى استخدام ViewModelProvider.AndroidViewModelFactory
  • تمّت إضافة طريقة ViewModelProvider.AndroidViewModelFactory.getInstance(Application) الثابتة لاسترداد قيمة Factory ثابتة مناسبة لإنشاء مثيل ViewModel وAndroidViewModel.