استخدام الـ Broadcast للتخاطب مع الـ Started Service
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في درس سابق رأينا كيف ان الـ 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.
رابط الكلاسات المستخدمه في هذا الدرس
- تم استخدام MyStartedService.java في Main6Activity.java.
للحصول على رابط المشروع راجع درس المقدمة.
المصادر والمراجع
- LocalBroadcastManager | Android Developers.
- راجع الدرس: انشاء الـ Started Service.
- راجع الدرس: تعرف على الـ Services.
للمزيد راجع درس المقدمة.
نهاية الدرس
لاتنسى تتبع الدرس والدورة كذلك لإشعارك عندما يتم التعديل على المتحوى او اضافة المزيد من المعلومات. ايضاً لاتنسى الاعجاب بالدرس ومشاركته مع الاخرين.
محتوى الدورة
الكلمات الدليلية
عن الدرس
0 إعجاب |
1 متابع |
0 مشاركة |
1663 مشاهدات |
منذ 5 سنوات |
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !