تعرف على الـ Alarm Manager
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في هذا الدرس سنتعرف على الـ Alarm Manager فهو يعتبر وسيله سهله لتشغيل المهام في اوقات محدده. و الهدف من استخدامه هو لتشغيل شفرة برمجية في وقت معين بداخل تطبيقك حتى ولو كان مغلقاً.
نقاط يجب عليك مراعاتها
- سنقوم بإستخدام المكونات التالية مع الـ Alarm Manager وهي:
- الـ Service وبخاصة الـ IntentService, ربما تود الاطلاع على الدرس: انشاء الـ Intent Service.
- الـ Broadcast Receiver وبخاصة بشكل ثابت, ربما تود الاطلاع على الدرس: انشاء الـ Broadcast Receiver بشكل ثابت.
- الـ 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
كما جاء في النقطة الاولى:
- سنقوم بإستخدام المكونات التالية مع الـ Alarm Manager وهي:
- الـ Service وبخاصة الـ IntentService, ربما تود الاطلاع على الدرس: انشاء الـ Intent Service.
- الـ Broadcast Receiver وبخاصة بشكل ثابت, ربما تود الاطلاع على الدرس: انشاء الـ Broadcast Receiver بشكل ثابت.
الاليه:
- اي اننا سنحتاج الى انشاء كلاس Broadcast Receiver خاص بنا وكلاس Intent Service كذلك.
- سنقوم بعمل Intent لتشغيل كلاس الـ Broadcast Receiver.
- ثم سنضع هذه الـ Intent بداخل Pending Intent ونضعها بداخل الـ Alarm Manager اثناء ضبطه.
- عندما يحين الوقت سيقوم الـ Alarm Manager الموجود في النظام بتشغيل هذه الـ Pending Intent والتي بدورها ستقوم بتشغيل كلاس الـ Broadcast Receiver.
- ثم ستقوم كلاس الـ Broadcat Receiver بتشغيل كلاس الـ Service الخاص بنا وهي من نوع Intent Service.
- بداخل كلاسنا الـ Intent Service نضع الشفرة البرمجية المراد تشغيلها, كإظهار شعار للمستخدم او اخد نسخة احتياطية او مزامنة قاعدة البيانات.
نجدول الـ Alarm Manager, عندما يحين وقته يقوم بتشغيل Broadcast Receiver والذي بدوره يقوم بتشغيل Service (في خيط حاسوبي خاص) التي تحتوي على شفرتنا البرمجية. في بعض الحالات قد نحتاج الى انشاء وتملك Wake Lock خاص بنا للتأكد من تشغيل الـ Service.
في هذا الدرس تعرفنا على الـ Alarm Manager وانواع استخدامه بالوقت النسبي والحقيقي, في الدرس القادم سنرى طرق استخدامه برمجياً.
المصادر والمراجع
- AlarmManager | Android Developers.
- Schedule repeating alarms | Android Developers.
- PowerManager | Android Developers.
- PowerManager.WakeLock | Android Developers.
للمزيد راجع درس المقدمة.
نهاية الدرس
لاتنسى تتبع الدرس والدورة كذلك لإشعارك عندما يتم التعديل على المتحوى او اضافة المزيد من المعلومات. ايضاً لاتنسى الاعجاب بالدرس ومشاركته مع الاخرين.
محتوى الدورة
الكلمات الدليلية
عن الدرس
1 إعجاب |
2 متابع |
0 مشاركة |
2197 مشاهدات |
منذ 5 سنوات |
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !