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

توفّر مكتبة "رحلة المستخدِم" واجهات برمجة تطبيقات مدمَجة تتيح لك الدمج مع ميزة Compose في 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 حدث 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
  }
}