دمج مراحل النشاط في ميزة Compose

توفّر مكتبة Lifecycle واجهات برمجة التطبيقات المدمَجة التي تتيح لك الدمج مع Jetpack. إنشاء. تشمل واجهات برمجة التطبيقات الأساسية ما يلي:

  • التدفقات لتاريخ Lifecycle.State الحالي.
  • LifecycleEffects الذي يتيح لك تنفيذ حظر استنادًا إلى فئة معيّنة Lifecycle.Event

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

جمع بيانات حالة دورة الحياة باستخدام التدفقات

تعرض "رحلة المستخدِم" السمة currentStateFlow التي توفّر القيمة الحالية Lifecycle.State في صورة StateFlow بلغة Kotlin. يمكنك الحصول على Flow باسم State ويتيح ذلك لتطبيقك قراءة التغييرات في "رحلة المستخدِم" أثناء المقطوعة الموسيقية.

val lifecycleOwner = LocalLifecycleOwner.current
val stateFlow = lifecycleOwner.lifecycle.currentStateFlow
…
val currentLifecycleState by stateFlow.collectAsState()

يمكن الوصول إلى المثال السابق باستخدام وحدة lifecycle-common. تشير رسالة الأشكال البيانية تتوفّر طريقة currentStateAsState() في lifecycle-runtime-compose. التي تتيح لك قراءة حالة مراحل النشاط الحالية بسهولة سطر واحد. ويوضح المثال التالي هذا:

val lifecycleOwner = LocalLifecycleOwner.current
val currentLifecycleState = lifecycleOwner.lifecycle.currentStateAsState()

تشغيل الرمز في أحداث مراحل النشاط

وهناك أيضًا LifecycleEffects التي تتيح لك تنفيذ حظر عندما يتم حظر تحدث الحالة Lifecycle.Event.

LifecycleEventEffect(Lifecycle.Event.ON_START) {
  // do something here
}

بالإضافة إلى LifecycleEventEffect، يمكنك أيضًا استخدام LifecycleStartEffect وLifecycleResumeEffect ترتبط واجهات برمجة التطبيقات هذه أحداث محددة. وتوفّر هذه المؤسسات أيضًا حظرًا إضافيًا في الوحدة الأساسية. تساعد في إزالة أي رمز برمجي قد يكون الحدث قد بدأه.

LifecycleStartEffect

يتشابه LifecycleStartEffect مع LifecycleEffect، ولكنه يتم تشغيله فقط. في Lifecycle.Event.ON_START حدث يقبل أيضًا المفاتيح التي تعمل مثل المفاتيح الأخرى إنشاء المفاتيح. عندما يتغير المفتاح، يتم تشغيل الحظر مجددًا.

وعندما يكون هناك حدث Lifecycle.Event.ON_STOP أو يخرج التأثير من التركيبة، ينفذ كتلة onStopOrDispose. يسمح هذا بتنظيف أي عمل كانت جزءًا من كتلة البداية.

LifecycleStartEffect {
  // ON_START code is executed here

  onStopOrDispose {
    // do any needed clean up here
  }
}

تأثير استئناف دورة الحياة

تعمل LifecycleResumeEffect بالطريقة نفسها التي يعمل بها LifecycleStartedEffect، ولكن يتم تنفيذه على Lifecycle.Event.ON_RESUME. الحدث بدلاً من ذلك. ويتم أيضًا توفير كتلة onPauseOrDispose تؤدي إلى تنفيذ تنظيف البيانات.

LifecycleResumeEffect {
  // ON_RESUME code is executed here

  onPauseOrDispose {
    // do any needed clean up here
  }
}