تعتبر عمليات استدعاء Lazylifecycle إطارًا بسيطًا لتأجيل المهام غير الأساسية الخاصة بك ، والتهيئة من مسار إطلاق الشاشة مع الحفاظ على ضمانات التنفيذ نفسها لاستدعاءات دورة حياة Android.
السحب أولاً: عند إطلاق التطبيق ، يتعقب Play Store أرقام الإطلاق الباردة والدافئة والساخنة. وهو يفعل ذلك عن طريق قياس مدى سرعة تطبيقك من رسم الإطار الأول. يمكن أن يبدأ التطبيق عبر المشغل ، والإشعارات ، والعلاقات العميقة ، وما إلى ذلك ، ويمكن لكل منها هبوط المستخدم على شاشات مختلفة. يعتبر التطبيق قد جعل شاشته الأولى عندما يتم عرض علامة "المعروضة" على logcat. لقد تم عرضه دائمًا بعد جميع عمليات الاسترجاعات التصاعدية مثل OnCreate و OnStart و Onresume.
لذلك ، فإن أي رمز ينفذ في oncreate و onstart و onresume ، وغيرها من عمليات الاسترجاعات الصعودية (لا تذكر أشياء مثل onpostresume) لديها القدرة على جعل وقت إطلاق الشاشة سيئًا. لذلك ، يُنصح بإزالة التعليمات البرمجية القابلة للتأجيل بعيدًا عن عمليات الاسترداد لدورة حياة Android.
ولكن أين يجب أن نحركه؟ يمكننا أن نفعل الأشياء عند الطلب ، ولكن ليس كل شيء يمكن نقله على المرفق. على سبيل المثال ، تريد البدء في إجراء مكالمات N/W لجلب الصور في أقرب وقت ممكن. هنا ، لا نريد أن تبدأ أثناء عرض الشاشة ، لكن شاشة اللحظة تقدم مع عرض العنصر النائب ، نحتاج إلى بدء مكالمات N/W-DB. لنفترض أنك ترغب في تحميل مسودة بريد إلكتروني من DB ، أولاً نود تقديم شاشة التأليف ثم البدء في جلب المسودة.
يتم الحفاظ على ترتيب عمليات الاسترجاعات هذه حسب Android. في نشاط ، ستتبع onlazycreate () على LazyStart () ، يليه onlazyresume (). في الشظايا ، ستتبع OnLazyCreate () OnViewCreatedLazy (عرض) ، تليها OnLazyStart () تليها OnLazyResume (). هناك شيء واحد في الذهن هو أن جميع عمليات الاسترجاعات البطيئة تحدث بعد أن تكون مشغلات مدير دورة الحياة البطيئة راضية. إنهم لا يتداخلون مع عمليات الاسترداد لدورة حياة Android.
أضف الكود أدناه إلى تبعيات ملف build.gradle dependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }
LazyLifecycleCallbacks في النشاط (تفضل النشاط BaseActivity ) ، وتوفير التطبيقات الافتراضية للطريقة.onCreate() .lifecycleManager.activate() في onResume ،lifecycleManager.deactivate() في onPause()supportsLazyLifecycleCallbacks() إلى true .BaseActivity أن تتجاوز الآن عوائق دورة الحياة البطيئة واستخدامها.انظر الرمز أدناه:
abstract class BaseActivity : AppCompatActivity (), LazyLifecycleCallbacks {
protected lateinit var lazyLifecycleManager : LazyLifecycleManager
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
lazyLifecycleManager = ViewBasedLazyLifecycleManager ( this )
}
override fun onResume () {
super .onResume()
lazyLifecycleManager.activate()
}
override fun onPause () {
super .onPause()
lazyLifecycleManager.deactivate()
}
override fun onLazyCreate () {}
override fun onLazyStart () {}
override fun onLazyResume () {}
override fun supportsLazyLifecycleCallbacks (): Boolean = false
}