مراحل النشاط

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

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

العناصر الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
دورة الحياة-* 2.7.0 - الإصدار 2.8.0 -beta01 -
إنشاء نموذج عرض دورة الحياة 2.7.0 - الإصدار 2.8.0 -beta01 -
تم إجراء آخر تعديل لهذه المكتبة في: 17 نيسان (أبريل) 2024

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

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

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

Kotlin

Groovy

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

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

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

        // 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.7.0"
        val arch_version = "2.2.0"

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

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

        // 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.7.0"
        def arch_version = "2.2.0"

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

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

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

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

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

ملاحظات

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

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

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

الإصدار 2.8

الإصدار 2.8.0-beta01

17 نيسان (أبريل) 2024

تم طرح "androidx.lifecycle:lifecycle-*:2.8.0-beta01". يتضمّن الإصدار 2.8.0-الإصدار التجريبي 01 هذه الالتزامات.

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

  • يتوافق عنصر 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 Multiplatform. (b/214568825)

لاستيعاب هذا التغيير، أصبح لدى الطُرق الآن طريقة مكافئة تستخدم kotlin.reflect.KClass<T>، مثل الطرق في ViewModelProvider التي استخدمت java.lang.Class<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)
  • تم نقل إضافات lifecycle-viewmodel-ktx kotlin إلى وحدة دورة الحياة الأساسية. (Id787b، b/274800183)
  • تم نقل إضافات lifecycle-runtime-ktx kotlin إلى وحدة دورة الحياة الأساسية. (Ic3686، b/274800183)
  • تم نقل إضافات lifecycle-livedata-core-ktx kotlin إلى وحدة دورة الحياة الأساسية. (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 Multiplatform. (aosp/2926690 وI0c5ac وIf445d)

الإصدار 2.8.0-alpha01

24 كانون الثاني (يناير) 2024

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

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

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

الإصدار 2.7

الإصدار 2.7.0

10 كانون الثاني (يناير) 2024

تم طرح "androidx.lifecycle:lifecycle-*:2.7.0". يتضمّن الإصدار 2.7.0 هذه الالتزامات.

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

  • تشتمل TestLifecycleOwner الآن على دالة التعليق setCurrentState() التي تضمن تغيير الحالة واكتمال جميع عمليات استدعاء LifecycleObserver قبل عرض الإعلان. وعلى عكس إعداد السمة currentState مباشرةً، لا تستخدم هذه الطريقة runBlocking، ما يجعلها آمنة للاستخدام ضمن الكوروتين، مثل الكوروتين المتوفّر من runTest.
  • تُطابق إضافتَي LiveData للسمة map وswitchMap الآن سلوك distinctUntilChanged. إذا تم ضبط LiveData في LiveData، سيتم استدعاء الدالة map/switchMap على الفور لتعبئة value لعرض LiveData.value يضمن ذلك ضبط القيمة الأولية كجزء من أوّل مقطوعة موسيقية (عند استخدامها مع observeAsState())، ولكن لا يؤدي إلى تغيير سلوك الملاحظة، لأنّ قيم التعديلات من المصدر LiveData لن يتم تطبيقها إلا بعد بدء ملاحظة LiveData.
  • يعمل هذا الإصدار على إصلاح المشكلة المتمثلة في عدم استعادة SavedStateHandle لصفوف Parcelable المخصّصة بشكل سليم بعد إيقاف العملية أو إعادة الترفيه. بسبب عدم توفُّر بعض المعلومات في إطار عمل Android، تتطلّب صفائف البيانات المخصّصة جهدًا إضافيًا (إنشاء مصفوفة مكتوبة من النوع الصحيح يدويًا) والمستندات على get وgetLiveData وgetStateFlow تستدعي الآن هذا القيد على وجه التحديد.
  • تمت إزالة قواعد الاحتفاظ بالبيانات المرتبطة بحساب 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 مباشرةً باسم Compose State. يعادل ذلك (وبديل أقصر) للقاعدة 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 السابقة، ما يضمن أنّ استخدام البيانات المباشرة الناتجة في 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 لتشغيل Compose 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)
  • تمت إزالة قواعد الاحتفاظ بالبيانات المرتبطة بحساب 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 هذه الالتزامات.

التعديلات على المهام التابعة للتبعية

الإصدار 2.6.0

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

تم طرح "androidx.lifecycle:lifecycle-*:2.6.0". يتضمّن الإصدار 2.6.0 هذه الالتزامات.

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

  • تتضمّن LiveData الآن سمة isInitialized جديدة تشير إلى ما إذا تم ضبط قيمة صريحة على LiveData، ما يتيح لك التمييز بين liveData.value التي تعرض القيمة null بسبب عدم ضبط أي قيمة أو قيمة null صريحة.
  • تشتمل MediatorLiveData الآن على دالة إنشائية لضبط قيمة مبدئية.
  • تم إضافة إضافة جديدة في StateFlow وFlow من collectAsStateWithLifecycle() يتم جمعها من المسارات وتعرض أحدث قيم لها بصفتها "حالة الإنشاء" استنادًا إلى مراحل النشاط.
  • تم إيقاف 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 وI59a21829/2) و{49a21829/2}.

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

  • لم يعُد الخطأ "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) بشكل صحيح عند استخدام دالة إنشاء الحالة مع Lifecycle الإصدار 2.4 والإصدارات الأحدث (I5b315، b/238011621)

الإصدار 2.6.0-alpha01

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

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

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

  • تم إدراج إضافة جديدة في StateFlow وFlow من إجمالي collectAsStateWithLifecycle يتم جمعها من المسارات وتمثّل أحدث قيمة لها بصفتها "حالة الإنشاء" بطريقة تراعي مراحل النشاط. يتم جمع التدفق وضبط الانبعاثات الجديدة على قيمة الولاية عندما لا تقل دورة الحياة عن 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 ذات الحالة مع الإصدار Lifecycle 2.4 والإصدارات الأحدث. (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 CreationExtras - عند كتابة 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 Integration: يحتوي العنصر 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)
  • تتم الآن إضافة تعليقات توضيحية إلى امتدادات LiveData -ktx باستخدام @CheckResult لفرض استخدام النتيجة عند استدعاء هذه الدوال. (Ia0f05، b/207325134)

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

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

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

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

الإصدار 2.5.0-alpha01

26 يناير 2022

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

ViewModel CreationExtras

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

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

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

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

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

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
    }
}

نستخدم دالة إضافة Kotlin createSavedStateHandle() في 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)

الإصدار 2.4.0

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

تم طرح "androidx.lifecycle:lifecycle-*:2.4.0". يتضمّن الإصدار 2.4.0 هذه الالتزامات.

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

  • تم إيقاف @OnLifecycleEvent نهائيًا. يجب استخدام LifecycleEventObserver أو DefaultLifecycleObserver بدلاً من ذلك.
  • تمت إضافة مكتبة واحدة (androidx.lifecycle:lifecycle-viewmodel-compose). وهي توفّر viewModel() قابل للإنشاء وLocalViewModelStoreOwner.
    • تغيير جذري: تمت إعادة كتابة اللغة ViewModelProvider بلغة Kotlin. لم تعُد طريقة ViewModelProvider.Factory.create تسمح باستخدام قيم عامة قابلة للتعديل.
  • تمّت إضافة واجهة برمجة تطبيقات coroutines جديدة إلى 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 إلى الإصدار التجريبي 01. يحتوي الإصدار 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)
  • تم نقل Default LifecycleMonitorer من "androidx.lifecycle.lifecycle-common-java8" إلى androidx.lifecycle.lifecycle-common. لم تعُد السمة androidx.lifecycle.lifecycle-common-java8 توفّر أي وظائف إضافية بالإضافة إلى androidx.lifecycle.lifecycle-common، لذلك يمكن استبدال الاعتمادية عليها بـ androidx.lifecycle.lifecycle-common. (I021aa)
  • تم نقل واجهة برمجة التطبيقات غير coroutines من 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)

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

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

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

  • نشكرك على استخدام maxsav لتحسين عملية التحقّق من أداة NullSafeMutableLiveData. (#147، b/183696616)
  • نشكرك من قِبل kozaxinan على تحسين عملية التحقّق من أداة NullSafeMutableLiveData. (#161، b/184830263)

الإصدار 2.4.0-alpha01

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

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

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

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

    كانت تتم هذه العملية سابقًا من قِبل "androidx.lifecycle.ProcessLifecycleOwnerInitializer".

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

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

    (أو)

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

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

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

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

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

الإصدار 1.0.0 من إنشاء نموذج عرض لمراحل النشاط

الإصدار 1.0.0-alpha07

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

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

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

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

الإصدار 1.0.0-alpha06

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

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

تم تحديث التطبيق ليصبح متوافقًا مع إصدار ComposeAllowed 1.0.0-beta08.

الإصدار 1.0.0-alpha05

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

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

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

  • تم تحديث التطبيق ليصبح متوافقًا مع إصدار ComposeAllowed 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 من دورة الحياة-عرض النموذج-إنشاء

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

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

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

  • يتضمّن LocalViewModelStoreOwner الآن دوال provides يمكن استخدامها مع CompositionLocalProvider، بدلاً من asProvidableCompositionLocal() API. (I45d24)

الإصدار 1.0.0-alpha01 من دورة الحياة-عرض النموذج-إنشاء

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

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

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

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

الإصدار 2.3.1

الإصدار 2.3.1 من دورة الحياة

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

تم طرح "androidx.lifecycle:lifecycle-*:2.3.1". يتضمّن الإصدار 2.3.1 هذه الالتزامات.

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

  • يمكن الآن لقاعدة NonNullableMutableLiveData Lint الآن التفريق بشكل صحيح بين متغيرات الحقول باستخدام قيم مختلفة للقيم الفارغة. (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 والجزء 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)
  • تشمل عملية التحقّق من لينت في 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)

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

  • تم إصلاح مشكلة تسبّبت في نشر عمليات التحقّق من Lint في MutableLiveData التي تم إصدارها في دورة الحياة 2.3.0-alpha01 بجانب العنصر lifecycle-livedata-core-ktx. (b/155323109)

الإصدار 2.3.0-alpha02

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

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

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

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

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

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

الإصدار 2.3.0-alpha01

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

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

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

  • تتيح لك واجهة برمجة تطبيقات ViewTreeLifecycleOwner.get(View) جديدة استرداد LifecycleOwner يحتوي على مثيل View. يجب الترقية إلى النشاط 1.2.0-alpha01 والجزء 1.3.0-alpha01 لتعبئة هذا بشكل صحيح. تتوفّر إضافة Kotlin findViewTreeLifecycleOwner في 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 ViewModel SaveState الآن الإصدار نفسه مع عناصر دورة الحياة الأخرى. يتطابق سلوك 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 الجديد تكاملاً بين دورة الحياة وكوروتينات 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 لمراحل نشاط الحياة وLiveData. يمكنك الاطّلاع هنا على مستندات تفصيلية حول هذه المواضيع.

ViewModel-SavedState الإصدار 1.0.0

الإصدار 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 تلقائيًا.
  • تمت إضافة AbstractSavedStateViewModelSettings. يتيح لك ذلك إنشاء مصانع مخصّصة لـ "ViewModel" ومنحها إمكانية الوصول إلى "SavedStateHandle".

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

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

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

التغييرات المتعلّقة بالتبعية

  • تعتمد الآن تقنية ViewModel SaveState على دورة الحياة 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-الإصدار التجريبي 01 على هذه الالتزامات.

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

  • تم إصلاح المشكلة التي كانت تؤدي إلى دخول SaveState ViewModel لأول مرة في 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". يمكنك الاطّلاع هنا على العمولات التي تم تضمينها في هذا الإصدار.

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

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 الآن المساهمة فيsavestate. لإجراء ذلك، عليك استخدام SavedStateVMFactory المصنع الجديد لـ viewmodel الذي تم تقديمه مؤخرًا، ويجب أن يحتوي ViewModel على دالة إنشاء تتلقى SavedStateHandle كائنًا كمَعلمة.

الإصدار 2.1.0

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

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

الإصدار 2.1.0

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

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

الإصدار 2.1.0-rc01

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

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

الإصدار 2.1.0-beta01

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

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

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

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

الإصدار 2.1.0-alpha04

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

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

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

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

الإصدار 2.1.0-alpha03

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

تم طرح "androidx.lifecycle:*:2.1.0-alpha03". يمكن العثور هنا على القائمة الكاملة لعمليات الالتزام المدرَجة في هذا الإصدار.

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

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

الإصدار 2.1.0-alpha02

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

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

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

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

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

  • تم إصلاح مشكلة تعطل مثيلات ViewModel الوهمية عند محو ViewModelStore التي تحتوي على. b/122273087

الإصدار 2.1.0-alpha01

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

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

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

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

الإصدار 2.0.0

الإصدار 2.0.0

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

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

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

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

الإصدار 2.0.0-beta01

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

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

  • إصلاح قاعدة ProguardycycleMonitorer للاحتفاظ بعمليات التنفيذ فقط، وليس الواجهات الفرعية b/71389427
  • تم إصلاح قواعد Proguard لـ 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.