انشاء الـ Broadcast Receiver بشكل ثابت

Mohammad Laifمنذ 5 سنوات

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

 

في الدرس السابق تعرفنا على الـ Broadcast Receiver. في هذا الدرس سنقوم بأنشائه بشكل ثابت (Static).
 

ملاحظة: الـ Broadcast Receiver يتم تشغيله في الخلفيه ولكن في الخيط الرئيسي بشكل غير متزامن (Asynchronous, اي ربما يقوم بالعمل قبل الاسطر البقية التي قبله), لذلك اي عملية طويلة نقوم بإجرائها فيه سوف تسبب في بطئ التطبيق. ولحل هذه المشكلة نستطيع استخدام احد انماط التصميم للخيوط الحاسوبية.

 

انشاء كلاس الـ Broadcast Receiver

الخطوات

  • ننشئ كلاس تقوم بعمل extends لكلاس الـ BroadcastReceiver.
  • نعمل Override للدالة onReceive.
  • نسجل الكلاس كـ Broadcast Receiver في ملف الـ manifest.xml.

 

انشاء كلاس تقوم بعمل extends لكلاس الـ BroadcastReceiver:

public class MyFirstReceiver extends BroadcastReceiver {}

 

عمل Override للدالة onReceive:

@Override
    public void onReceive(Context context, Intent intent) {
}

 

تسجيل  الكلاس كـ Broadcast Receiver في ملف الـ manifest.xml:

<receiver android:name=".broadcast.MyFirstReceiver">
<!--Actions-->
</receiver>

 

طريقة تشغيلة من الـ Activity:

Intent intent = new Intent(Main7Activity.this, MyFirstReceiver.class);
sendBroadcast(intent);

بأستخدام الـ Intent ومن خلال الدالة SendBroadcast نقوم بإرسال امر التشغيل من الـ Activity. حتى تعمل الشفرة البرمجية الموجودة في دالة الـ onReceive بكلاس البرودكاست.

 

تحديد حدث خاص بنا (Action)

نستطيع ايضاً تحديد حدث خاص بالـ Broadcast الذي انشئناه باستخدام الـ Intent Filter كالتالي:
في ملف الـ manifest.xml:

        <receiver android:name=".broadcast.MyFirstReceiver">
            <intent-filter>
                <action android:name="my.custom.action.name"/>
            </intent-filter>
        </receiver>

 

طريقة تشغيلة من الـ Activity:

Intent intent2 = new Intent("my.custom.action.name");
sendBroadcast(intent2);

 

ملاحظة: نستطيع تمرير بيانات الى الـ Broadcast Receiver الخاص بنا بوضعهم بداخل الـ Intent بمساعدة الدالة putExtra() سواء متفرقين او على شكل Bundle. وهذا الشئ يساعدنا في نقل البيانات بين المكونات كما سنرى في الدرس: استخدام الـ Local Broadcast للتخاطب مع الـ Started Service.

 

استخدام احداث هاتف المستخدم لتشغيل الـ Broadcast Receiver

هنا تكمن قوة الـ Receiver, فنحن اساساً نريد تفعيل هذه الكلاس التي انشئناها عندما يطرئ حدث ما في جهاز المستخدم, ونستطيع ذلك حسب الخطوات التاليه:

في ملف الـ manifest.xml:

<receiver android:name=".broadcast.MyFirstReceiver">
    <intent-filter>
        <action android:name="android.intent.action.AIRPLANE_MODE"/>
    </intent-filter>
</receiver>

لاحظ الـ Action وهو خاص بوضع الطيران. اي اذا قام المستخدم بتفعيل وضع الطيران في هاتفه فسوف يعمل تطبيقنا ويفعل الشفرة البرمجية الموجودة في كلاس البرودكاست.

 

في هذا الدرس رأينا طريقة استخدام الـ Broadcast Receiver بشكل ثابت, وايضاً تعرفنا على طريقة تشغيله ومن ابرزها طريقة تشغيله بإستخدام الاحداث التي تنتج من جهاز المستخدم. في الدرس القادم سنقوم بإستخدام الـ Broadcast Receiver بشكل ديناميكي.

 

الكلاسات المستخدمه في هذا الدرس

للحصول على رابط المشروع راجع درس المقدمة.
 

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

راجع درس تعرف على الـ Broadcast Receiver.

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

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

المحاضر

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

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

عن الدرس

0 إعجاب
1 متابع
0 مشاركة
2182 مشاهدات
منذ 5 سنوات

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

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

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