تعرف على الـ Alarm Manager

Mohammad Laifمنذ 3 سنوات

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

 

في هذا الدرس سنتعرف على الـ Alarm Manager فهو يعتبر وسيله سهله لتشغيل المهام في اوقات محدده. و الهدف من استخدامه هو لتشغيل شفرة برمجية في وقت معين بداخل تطبيقك حتى ولو كان مغلقاً.

 

نقاط يجب عليك مراعاتها

  • سنقوم بإستخدام المكونات التالية مع الـ Alarm Manager وهي:
  • الـ Alarm Manager يعتبر وسيلة دقيقة جداً في جدولة وتشغيل المهام, فهو ادق من البقيه مثل الـ JobSchedualer و الـ JobDispatcher و الـ WorkManager كما سيأتي شرحهم في الدروس: استخدام الـ Android JobSchedualer و استخدام الـ Firebase JobDispatcher و استخدام الـ WorkManager من حزمة JetPack.
  • الـ Alarm Manager لايرتبط بإي دورة حياة LifeCycle داخل تطبيقك, فهو يأتي من خلال النظام كخدمة Service وتستطيع الوصول له بإستخدام الدالة getSystemService من اي مكون لديك بتطبيقك (كالـ Activity).
  • يوجد له نوعان للضبظ بإستخدام الوقت النسبي (منذ تشغيل الهاتف) او بإستخدام الوقت الحقيقي (كأوقات التقويم).

 

متى واين نقوم بإستخدم الـ Alarm Manager

نقوم بإستخدامه في العمليات التي نريد اجرائها محلياً في هاتف المستخدم. ونتجنب استخدامه في العمليات التي لاتتم في هاتف المستخدم بقدر المستطاع, كالعمليات التي تتطلب المزامنة مع السيرفرات او الـ API بشكل مباشر. اذا دعتنا الحاجة القصوى فيجب علينا انشاء اليه لعمل هذا الشئ في اوقات عشوائية لكل هاتف مستخدم.

 

تخيل لو انك جعلت الـ Alarm Manager يقوم بتشغيل شفرة برمجية تخاطب السيرفر الخاص بك لتحديث بيانات التطبيق للمستخدمين في الساعة الثالثة عصراً. وعدد المستخدمين قد وصل الى ٥٠٠٠٠ او اكثر ماذا سيحدث لسيرفرك في الساعة ٣ العصر برأيك؟

في هذه الحالة لاينصح بإستخدام الـ Alarm Manager, بل يفضل استخدام الـ Adapter Sync.

 

انواع استخدام الـ Alarm

النوع الاول بالوقت النسبي او مايسمى بالـ Elapsed Real Time

مناسب للشفرات البرمجية التي نريد تشغيلها بعد انقضاء فترة معينة من الوقت, او تكرارها في داخل حلقه زمنيه والتي لاتتأثر بالمنطقة الزمنية للمستخدم. كتشغيل شفرة برمجية كل ٣٠ ثانية سواء كان ليلاً او نهاراً.

يقاس الوقت النسبي Elapsed Real Time من بعد تشغيل او عادة تشغيل جهاز المستخدم. اي نسبياً بعد انقضاء الوقت من تشغيل الهاتف.

 

النوع الثاني بالوقت الحقيقي او مايسمى بالـ Real Time Clock اختصاراً RTC

مناسب للشفرات البرمجية التي نريد تشغيلها في فترة معينه وتتأثر بالمنطقة الزمنية للمستخدم. كتشغيل شفرة برمجية الساعة ٥ صباحاً.

يقاس الوقت الحقيقي Real Time Clock بإستخدام التقويم. اي الساعة ٨ صباحاً او ٨ ليلاً حسب المنطقة الزمنية للمستخدم.

 

الية عمل الـ Alarm Manager

كما جاء في النقطة الاولى:

 

الاليه:

  1. اي اننا سنحتاج الى انشاء كلاس Broadcast Receiver خاص بنا وكلاس Intent Service كذلك.
  2. سنقوم بعمل Intent لتشغيل كلاس الـ Broadcast Receiver.
  3. ثم سنضع هذه الـ Intent بداخل Pending Intent ونضعها بداخل الـ Alarm Manager اثناء ضبطه.
  4. عندما يحين الوقت سيقوم الـ Alarm Manager الموجود في النظام بتشغيل هذه الـ Pending Intent والتي بدورها ستقوم بتشغيل كلاس الـ Broadcast Receiver.
  5. ثم ستقوم كلاس الـ Broadcat Receiver بتشغيل كلاس الـ Service الخاص بنا وهي من نوع Intent Service.
  6. بداخل كلاسنا الـ Intent Service نضع الشفرة البرمجية المراد تشغيلها, كإظهار شعار للمستخدم او اخد نسخة احتياطية او مزامنة قاعدة البيانات.

 

نجدول الـ Alarm Manager, عندما يحين وقته يقوم بتشغيل Broadcast Receiver والذي بدوره يقوم بتشغيل Service (في خيط حاسوبي خاص) التي تحتوي على شفرتنا البرمجية. في بعض الحالات قد نحتاج الى انشاء وتملك Wake Lock خاص بنا للتأكد من تشغيل الـ Service.

 

في هذا الدرس تعرفنا على الـ Alarm Manager وانواع استخدامه بالوقت النسبي والحقيقي, في الدرس القادم سنرى طرق استخدامه برمجياً.

 

 

المصادر والمراجع

للمزيد راجع درس المقدمة.
 

نهاية الدرس
لاتنسى تتبع الدرس والدورة كذلك لإشعارك عندما يتم التعديل على المتحوى او اضافة المزيد من المعلومات. ايضاً لاتنسى الاعجاب بالدرس ومشاركته مع الاخرين.

المحاضر

Mohammad Laif

محتوى الدورة

تمهيد
1 مقدمة
2 تعرف على التزامن (الـ Concurrency)
3 اخطاء التزامن (الـ Concurrency) الشائعة
العمليات Processes
1 الهيكلة الهندسية لبيئة نظام الاندرويد
2 طبقة الـ Android Runtime و العمليات Processes
3 انواع العمليات (Processes)
الخيوط الحاسوبية Threads
1 الخيوط الحاسوبية (Threads)
2 مكونات الخيوط الحاسوبية (Thread)
3 انشاء الخيط الحاسوبي
أنماط التصميم للخيوط الحاسوبية
1 انشاء نمط الـ Handler و Looper و Thread
2 انشاء نمط الـ HandlerThreads
3 ماهو نمط الـ Thread Pools (الـ Executors)
4 استخدام نمط الـ Thread Pools كـ Singleton
5 استخدام الـ Callable مع نمط الـ Thread Pools
6 انشاء بركة خيوط حاسوبية Thread Pools لتسريع قاعدة البيانات
7 انشاء نمط الـ AsyncTask
8 انشاء نمط الـ Loader
الـ Broadcasts
1 تعرف على الـ Broadcast Receiver
2 انشاء الـ Broadcast Receiver بشكل ثابت
3 انشاء الـ Broadcast Receiver بشكل ديناميكي
4 استخدام الـ Local Broadcast للتخاطب بين المكونات
الـ Services
1 تعرف على الـ Services
2 انشاء الـ Started Service
3 انشاء الـ Intent Service
4 انشاء الـ Bound Service
5 استخدام الـ ResultReceiver للتخاطب مع الـ Intent Service
6 استخدام الـ Broadcast للتخاطب مع الـ Started Service
الـ Alarm Manager
1 تعرف على الـ Alarm Manager الدرس الحالي
2 طرق استخدام الـ Alarm Manager
الـ Jobs
1 استخدام الـ Android JobSchedualer
2 استخدام الـ Firebase JobDispatcher
3 استخدام الـ WorkManager من حزمة JetPack

الكلمات الدليلية

عن الدرس

1 إعجاب
2 متابع
0 مشاركة
1368 مشاهدات
منذ 3 سنوات

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !