09982292579
info@mehraeen.ac.ir
فارسی پرچم
فارسی
یک زبان را انتخاب کنید
فارسی پرچم
فارسی
0
دسته ها
خانه تقویم‌آموزشی مدرس وبلاگ چارت‌‌دروس تماس‌با‌ما درباره‌ما انجمن‌ها
برنامه نویسي موبایل 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 یکی از این مکانیزم‌هاست که به برنامه‌ها اجازه می‌دهد به رویدادهای سیستم یا رویدادهای ارسال شده توسط برنامه‌های دیگر گوش دهند و به آن‌ها واکنش نشان دهند. این رویدادها می‌توانند شامل تغییر وضعیت شبکه، اتمام شارژ باتری، دریافت پیامک جدید، یا هر رویداد سفارشی دیگری باشند که توسط برنامه‌های دیگر تعریف شده است.

نکات کلیدی:


  1. تعریف Broadcast Receiver:


  • Broadcast Receiver یک کامپوننت برنامه اندروید است که به رویدادهای پخش شده (broadcasts) گوش می‌دهد.

  • برای ایجاد یک Broadcast Receiver، باید کلاسی را ایجاد کنید که از android.content.BroadcastReceiver ارث‌بری کند و متد onReceive() آن را بازنویسی کنید.


  1. ثبت (Register) کردن Broadcast Receiver:


  • ثبت داینامیک (Dynamic Registration): با استفاده از Context.registerReceiver() در زمان اجرای برنامه. این نوع ثبت موقتی است و با پایان یافتن برنامه یا کامپوننت ایجاد کننده، Receiver غیرفعال می‌شود. برای لغو ثبت از Context.unregisterReceiver() استفاده می‌شود.

  • ثبت استاتیک (Static Registration): با استفاده از تگ <receiver> در فایل AndroidManifest.xml. این روش به سیستم‌عامل اجازه می‌دهد تا حتی زمانی که برنامه در حال اجرا نیست، به رویدادهای خاصی گوش دهد و برنامه را اجرا کند.


  1. ارسال (Send) رویدادها (Intents):


  • رویدادها به صورت Intent ارسال می‌شوند.

  • برای ارسال رویدادهای سیستمی، از Intent های پیش‌فرض اندروید مانند ACTION_BOOT_COMPLETED، ACTION_POWER_CONNECTED، ACTION_AIRPLANE_MODE_CHANGED استفاده می‌شود.

  • برای ارسال رویدادهای سفارشی (Custom Broadcasts)، یک Intent جدید ایجاد کرده و سپس با استفاده از Context.sendBroadcast() یا LocalBroadcastManager.sendBroadcast() آن را ارسال می‌کنیم.


  1. متد onReceive():


  • این متد زمانی فراخوانی می‌شود که یک رویداد (Intent) مطابق با فیلترهای ثبت شده برای Receiver دریافت شود.

  • پارامترهای این متد شامل Context و Intent دریافتی است.

  • عملیات انجام شده در این متد باید کوتاه و سریع باشد. برای کارهای سنگین و زمان‌بر (مانند عملیات شبکه یا دیتابیس)، بهتر است از Service ها یا WorkManager استفاده شود تا از ایجاد اختلال در تجربه کاربری (ANR - Application Not Responding) جلوگیری شود.


  1. انواع Broadcast:


  • Normal Broadcasts: این نوع broadcast ها به صورت ناهمزمان (asynchronous) ارسال می‌شوند. سیستم‌عامل همه receivers ها را در صف قرار داده و آن‌ها را اجرا می‌کند. این نوع broadcast امن‌تر است اما کندتر.

  • Ordered Broadcasts: این نوع broadcast ها به صورت همزمان (synchronous) ارسال می‌شوند. سیستم‌عامل receiver ها را به ترتیبی که در AndroidManifest.xml ثبت شده‌اند، اجرا می‌کند. هر receiver می‌تواند نتیجه را دستکاری کند یا ارسال آن را به receiver های بعدی متوقف کند.


  1. ملاحظات امنیتی:


  • برای جلوگیری از دریافت broadcast های ناخواسته توسط برنامه‌های دیگر، می‌توان از مجوزها (Permissions) استفاده کرد. هنگام ارسال broadcast، مجوز مورد نظر را مشخص کنید (sendBroadcast(intent, receiverPermission)) و هنگام ثبت receiver، آن مجوز را در AndroidManifest.xml یا هنگام ثبت داینامیک مشخص کنید.

  • استفاده از LocalBroadcastManager برای broadcast های درون برنامه‌ای، امنیت و کارایی را افزایش می‌دهد زیرا این broadcast ها تنها در محدوده برنامه قابل دسترسی هستند.

تمرین پایان فصل:


















  1. یک Broadcast Receiver سفارشی بنویسید که به یک رویداد سفارشی (مثلاً با نام “com.example.MY_CUSTOM_EVENT”) گوش دهد.

  2. این Receiver را به صورت استاتیک در AndroidManifest.xml ثبت کنید.

  3. یک دکمه در رابط کاربری برنامه اصلی قرار دهید که با کلیک روی آن، رویداد سفارشی “com.example.MY_CUSTOM_EVENT” ارسال شود.

  4. هنگامی که رویداد دریافت شد، یک پیام کوتاه (Toast) نمایش دهید که نشان دهد رویداد دریافت شده است.

  5. (اختیاری) این رویداد را به صورت Normal Broadcast ارسال کنید و سپس آن را به Ordered Broadcast تغییر داده و تأثیر آن را مشاهده کنید.
درس متنی 4/13
در حال مشاهده
جلسه 4 Broadcast Receiver