استخدام الـ Broadcast للتخاطب مع الـ Started Service

Mohammad Laifمنذ 5 سنوات

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

 

في درس سابق رأينا كيف ان الـ Bound Service ترسل النتائج مع المكون الملتصق بها. وقعد جعلنا الـ Intent Service تقوم بإستخدام الـ ResultReceiver لإرسال النتائج في الدرس السابق. اما في هذا الدرس سنقوم بإستخدام الـ Broadcast لإرسال النتائج من الـ Started Service الى المكون الذي قام بتشغيلها وهو الـ Activity (تستطيع استخدام هذه الطريقه مع الـ Intent Service كذلك). قبل هذا كله ربما تريد مراجعة الدرس: انشاء الـ Started Service في نظام الاندرويد.

 

في هذا الدرس سنرى كيفية ارسال النتائج من الـ Service بواسطة الـ Broadcast Receiver واستقبالها في الـ Activity لإستخدام النتيجه لتحديث الـ Views. تستطيع اضافة عليها حماية اكثر بإستخدام الـ Broadcast المحلي كما جاء في الدرس: استخدام الـ Local Broadcast للتخاطب بين المكونات.

 

في كلاس الـ Actiivty:

  • ننشئ حقل للـ View هنا سوف تكون TextView.
  • ننشئ حقل للـ BroadcastReceiver ومن خلاله نستقبل الـ Intent ثم نقوم بتحديث الـ TextView بداخله.
  • نعمل override للداله onResume لعمل تسجيل للـ Broadcast.
  • نعمل override للداله onPause لعمل الغاء التسجيل للـ Broadcast.

 

الخطوات:

انشاء الحقول للـ TextView و Broadcast Receiver:

    private TextView mResultTextView;

    // Used for Started Service Example
    private BroadcastReceiver mStartedServiceBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String result = intent.getStringExtra(Constant.RESULT_NUMBER);
            mResultTextView.setText(result);
        }
    };

 

عمل override للدوال onResume و onPause لتسجيل والغاء التسجيل للـ Broadcast:

    // Register our Local Broadcast
    @Override
    protected void onResume() {
        super.onResume();

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("action.my_started_service.to.activity");    // Modifier to determined this broadcast
        registerReceiver(mStartedServiceBroadcastReceiver, intentFilter);
    }

    // Unregister our Local Broadcast
    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(mStartedServiceBroadcastReceiver);
    }

 

طريقة ارسال النتائج من الـ Service الى الـ Activity
في كلاس الـ Service:

  • ننشئ Intent تحمل الـ Action الخاص بهذه العمليه.
  • نقوم بإرسال هذه الـ Intent بإستخدام sendBroadcast.

 

الخطوات:
بعد الانتهاء من النتيجه في الداله onStartCommand نصنع Intent تحمل Action خاص بهذه العمليه, ثم نغلف النتيجه بداخل تلك الـ Intent ونرسلها باستخدام الداله sendBroadcast كالتالي:

Intent intentForBroadcast = new Intent("action.my_started_service.to.activity");
intentForBroadcast.putExtra(Constant.RESULT_NUMBER, String.valueOf(resultNumber));
sendBroadcast(intentForBroadcast);

 

وهكذ استطعنا نقل البيانات من الـ Service الى المكون الذي قام بتشغيلها( وهو هنا Actiivty) لإستخدامه كما نريد او لتحديث احد العناصر كـ TextView.

 

في هذا الدرس رأينا طريقة استخدام الـ Local Broadcast لإرسال البيانات من الـ Started Service الى الـ Activity.

 

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

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

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

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

 

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

المحاضر

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 مشاركة
1638 مشاهدات
منذ 5 سنوات

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

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

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