برنامه نویسي موبایل 2
درس متنی
جلسه 4 Broadcast Receiver
نکات کلیدی:
تعریف Broadcast Receiver:
Broadcast Receiver یک کامپوننت برنامه اندروید است که به رویدادهای پخش شده (broadcasts) گوش میدهد.
برای ایجاد یک Broadcast Receiver، باید کلاسی را ایجاد کنید که از android.content.BroadcastReceiver ارثبری کند و متد onReceive() آن را بازنویسی کنید.
ثبت (Register) کردن Broadcast Receiver:
ثبت داینامیک (Dynamic Registration): با استفاده از Context.registerReceiver() در زمان اجرای برنامه. این نوع ثبت موقتی است و با پایان یافتن برنامه یا کامپوننت ایجاد کننده، Receiver غیرفعال میشود. برای لغو ثبت از Context.unregisterReceiver() استفاده میشود.
ثبت استاتیک (Static Registration): با استفاده از تگ <receiver> در فایل AndroidManifest.xml. این روش به سیستمعامل اجازه میدهد تا حتی زمانی که برنامه در حال اجرا نیست، به رویدادهای خاصی گوش دهد و برنامه را اجرا کند.
مقدمه:
در سیستمعامل اندروید، برنامهها برای ارتباط با یکدیگر و سیستمعامل نیاز به مکانیزمی دارند. Broadcast Receiver یکی از این مکانیزمهاست که به برنامهها اجازه میدهد به رویدادهای سیستم یا رویدادهای ارسال شده توسط برنامههای دیگر گوش دهند و به آنها واکنش نشان دهند. این رویدادها میتوانند شامل تغییر وضعیت شبکه، اتمام شارژ باتری، دریافت پیامک جدید، یا هر رویداد سفارشی دیگری باشند که توسط برنامههای دیگر تعریف شده است.
نکات کلیدی:
- تعریف Broadcast Receiver:
- Broadcast Receiver یک کامپوننت برنامه اندروید است که به رویدادهای پخش شده (broadcasts) گوش میدهد.
- برای ایجاد یک Broadcast Receiver، باید کلاسی را ایجاد کنید که از
android.content.BroadcastReceiverارثبری کند و متدonReceive()آن را بازنویسی کنید.
- ثبت (Register) کردن Broadcast Receiver:
- ثبت داینامیک (Dynamic Registration): با استفاده از
Context.registerReceiver()در زمان اجرای برنامه. این نوع ثبت موقتی است و با پایان یافتن برنامه یا کامپوننت ایجاد کننده، Receiver غیرفعال میشود. برای لغو ثبت ازContext.unregisterReceiver()استفاده میشود. - ثبت استاتیک (Static Registration): با استفاده از تگ
<receiver>در فایلAndroidManifest.xml. این روش به سیستمعامل اجازه میدهد تا حتی زمانی که برنامه در حال اجرا نیست، به رویدادهای خاصی گوش دهد و برنامه را اجرا کند.
- ارسال (Send) رویدادها (Intents):
- رویدادها به صورت
Intentارسال میشوند. - برای ارسال رویدادهای سیستمی، از Intent های پیشفرض اندروید مانند
ACTION_BOOT_COMPLETED،ACTION_POWER_CONNECTED،ACTION_AIRPLANE_MODE_CHANGEDاستفاده میشود. - برای ارسال رویدادهای سفارشی (Custom Broadcasts)، یک
Intentجدید ایجاد کرده و سپس با استفاده ازContext.sendBroadcast()یاLocalBroadcastManager.sendBroadcast()آن را ارسال میکنیم.
- متد
onReceive():
- این متد زمانی فراخوانی میشود که یک رویداد (Intent) مطابق با فیلترهای ثبت شده برای Receiver دریافت شود.
- پارامترهای این متد شامل
ContextوIntentدریافتی است. - عملیات انجام شده در این متد باید کوتاه و سریع باشد. برای کارهای سنگین و زمانبر (مانند عملیات شبکه یا دیتابیس)، بهتر است از Service ها یا WorkManager استفاده شود تا از ایجاد اختلال در تجربه کاربری (ANR - Application Not Responding) جلوگیری شود.
- انواع Broadcast:
- Normal Broadcasts: این نوع broadcast ها به صورت ناهمزمان (asynchronous) ارسال میشوند. سیستمعامل همه receivers ها را در صف قرار داده و آنها را اجرا میکند. این نوع broadcast امنتر است اما کندتر.
- Ordered Broadcasts: این نوع broadcast ها به صورت همزمان (synchronous) ارسال میشوند. سیستمعامل receiver ها را به ترتیبی که در
AndroidManifest.xmlثبت شدهاند، اجرا میکند. هر receiver میتواند نتیجه را دستکاری کند یا ارسال آن را به receiver های بعدی متوقف کند.
- ملاحظات امنیتی:
- برای جلوگیری از دریافت broadcast های ناخواسته توسط برنامههای دیگر، میتوان از مجوزها (Permissions) استفاده کرد. هنگام ارسال broadcast، مجوز مورد نظر را مشخص کنید (
sendBroadcast(intent, receiverPermission)) و هنگام ثبت receiver، آن مجوز را درAndroidManifest.xmlیا هنگام ثبت داینامیک مشخص کنید. - استفاده از
LocalBroadcastManagerبرای broadcast های درون برنامهای، امنیت و کارایی را افزایش میدهد زیرا این broadcast ها تنها در محدوده برنامه قابل دسترسی هستند.
تمرین پایان فصل:
- یک Broadcast Receiver سفارشی بنویسید که به یک رویداد سفارشی (مثلاً با نام “com.example.MY_CUSTOM_EVENT”) گوش دهد.
- این Receiver را به صورت استاتیک در
AndroidManifest.xmlثبت کنید. - یک دکمه در رابط کاربری برنامه اصلی قرار دهید که با کلیک روی آن، رویداد سفارشی “com.example.MY_CUSTOM_EVENT” ارسال شود.
- هنگامی که رویداد دریافت شد، یک پیام کوتاه (Toast) نمایش دهید که نشان دهد رویداد دریافت شده است.
- (اختیاری) این رویداد را به صورت Normal Broadcast ارسال کنید و سپس آن را به Ordered Broadcast تغییر داده و تأثیر آن را مشاهده کنید.
دروس متنی
#1
جلسه 1 دیالوگ در اندروید 2
#2
جلسه 2 صوت و تصویر در اندروید
#3
جلسه 3 نمایش فهرست ها با Recycler View
#4
جلسه 4 Broadcast Receiver
#5
جلسه 5کار با دیتابیس Sqlite
#6
جلسه 6 Shared Preferences
#7
جلسه 7 ارتباط با اینترنت در اندروید و دانلود فایل از آن
#8
جلسه 8 استفاده ازGPS آپدیت وضعیت کاربر در صورت تغییر مکان و یا با فواصل زمان مشخص
#9
جلسه 9آشنایي با نحوه رسم نمودارهاي مختلف در اپلیکیشن هاي اندرویدي
#10
جلسه 10 ارسال و دریافت پیامک با SMS APIاندروید
#11
جلسه 11 Fragment ها
#12
جلسه 12 استفاده از داده هاي xml و json 12
#13
جلسه 13 استفاده از انیمیشن هايxml
مشاهده دروس کامل
بررسی صفحه یادگیری دوره