مشخصات پروژه
-
740
-
0.0
-
7415
-
0
-
0
آموزش کامپوننت های Broadcast Receiver
در این مقاله قصد داریم کامپوننت Broadcast Receiver « دریافت کننده های پیام های منتشرشده » را برای شما دانشجویان توضیح دهیم...
دوره آموزش اندروید
دوره آموزش برنامه نویسی اندروید
رمز فایل :tahlildadeh.com
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
با عرض سلام و خسته نباشید به شما دانشجویان محترم آموزشگاه تحلیلگر داده ها. در این مقاله قصد داریم کامپوننت Broadcast Receiver « دریافت کننده های پیام های منتشرشده » را برای شما دانشجویان توضیح دهیم.
اهداف پروژه :
در این مقاله ما قصد داریم مطالب زیر را برای شما شرح دهیم:
1. Broadcast Receiver
2. System Broadcast
3. Pending Intent
تعریف Broadcast Receiver
Broadcast Receiver « دریافت کننده های پیام های منتشرشده » بخشی از سیستم عامل اندروید می باشد که شما را قادر می سازد تا رویداد های برنامه و یا خود سیستم عامل اندروید را ثبت نمایید. تمام دریافت کننده های ثبت شده برای یک رویداد توسط سیستم عامل اندروید اطلاع رسانی می شوند.
برای مثال، برنامه ساخته شده شما می تواند برای رویداد ACTION_BOOT_COMPLETED یک رویداد ثبت نماید که بعد از اتمام فرایند بوت سیستم عامل اندروید، برنامه شما بصورت خودکار اجرا گردد.
دریافت کننده می تواند از طریق فایل AndroidManifest.xml ثبت گردد و همچنین شما می توانید آنرا از طریق متد Context.registerReceiver نیز، ثبت نمایید.
برای ساخت یک دریافت کننده می بایست کلاس خود را از کلاس BroadcastReceiver گسترش « extends » دهید. اگر رویدادی که برای دریافت کننده ثبت شده است رخ دهد، متد onReceive کلاس ساخته شده توسط سیستم عامل اندروید فراخوانده می شود.
چرخه یک Broadcast Receiver
دریافت کننده ها تنها دارای یک متد « چرخه » با نام onReceive می باشند و بعد از آنکه این متد فراخوانی و اجرا گردید، سیستم عامل اندروید می تواند دریافت کننده را بازیابی نماید.
پردازش غیرهمزمان
بعد از سطح API 11، شما نمی توانید عملیات همزمانی را در روش onReceive اجرا نمایید. زیرا همزمان با اتمام روش onReceive، سیستم عامل اندروید می تواند اجزا را بازیابی نماید. اگر عملیات طولانی مدتی را اجرا می نمایید، می بایست از سرویس ها استفاده نمایید.
از زمان عرضه Android API 11، شما می توانید روش goAsync را فراخوانی نمایید. این روش یک شی از نوع PendingResult را بر می گرداند. سیستم عامل اندروید تا زمانی که دستور PendingResult.finish را فرا نخوانید، دریافت کننده را در حالت فعال نگاه می دارد. با استفاده از این گزینه شما می توانید پردازش غیرهمزمان یک دریافت کننده را فعال سازی نمایید. همزمان با اتمام یک رشته، فرایند آن متد finish را برای اتمام رشته به سیستم عامل اندروید فرا می خواند و این جز می تواند بازیابی گردد.
محدودیت های تعریف Broadcast Receiver
در Android 3.1، سیستم عامل اندروید تمام دریافت کننده ها را به طور پیش فرض در صورتی که توسط کاربر از طریق منوی اندروید فعال شده باشد را غیرفعال می نماید (Manage > Application).
این امر یکی از ویژگی های فرعی امنیتی می باشد و کاربر می تواند اطمینان حاصل نماید که برنامه ای که آغاز نموده است می تواند broadcast را دریافت نماید.
نکته
این بدین معنا نیست که کاربر باید بعد از خاموش/روشن کردن، دوباره برنامه را اجرا نماید. سیستم عامل اندروید به خاطر دارد که کاربر آن را اجرا نموده است. فقط یک بار شروع کافی می باشد.
System broadcasts
چندین رویداد سیستم به عنوان ساختار نهایی در ساختار Intent تعریف شده اند. سایر سیستم عامل های اندروید نیز رویدادهایی را تعریف می نمایند. برای مثال Telephony Manager، رویدادها را برای تغییر شرایط گوشی تعریف می نماید.
جدول زیر چند رویداد مهم را ارائه می دهد.
|
رویداد |
توضیحات |
|
Intent.ACTION_BOOT_COMPLETED |
بوت کامل شده است. نیازمند مجوز android.permission.RECEIVE_BOOT_COMPLETED |
|
Intent.ACTION_POWER_CONNECTED |
برق به دستگاه متصل شده است. |
|
Intent.ACTION_POWER_DISCONNECTED |
برق از دستگاه قطع شده است. |
|
Intent.ACTION_BATTERY_LOW |
در صورت کاهش باتری فعال می شود. اساسا برای کاهش فعالیت ها در برنامه که از باتری بیشتری استفاده می نمایند به کار برده می شود. |
|
Intent.ACTION_BATTERY_OKAY |
میزان باتری به حالت عادی بازگشته است. |
شروع خودکار سرویس ها از طریق دریافت کننده ها
یکی از نیازمندی های اصلی، آغاز خودکار یک برنامه بعد از خاموش/روشن کردن سیستم برای همگام سازی داده ها می باشد. برای این کار شما می توانید یک دریافت کننده را برای رویداد سیستم android.intent.action.BOOT_COMPLETED ثبت نمایید. توجه داشته باشید که این امر نیازمند مجوز android.permission.RECEIVE_BOOT_COMPLETED نیز، می باشد.
مثال زیر نحوه ثبت برای رویداد BOOT_COMPLETED در فایل AndroidManifest.xml را نشان می دهد. (شکل 1)
شکل 1
Receive سرویس ها را به صورت کد زیر نشان می دهد. (شکل 2)
شکل 2
نکته
اگر برنامه شما بر روی کارت حافظه SD نصب شده باشد، در این صورت بعد از رویداد android.intent.action.BOOT_COMPLETED در دسترس نخواهد بود. در این صورت آن را برای رویداد android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE ثبت نمایید.
توجه
به خاطر داشته باشید که در Android API 11 و به بعد، کاربر می بایست برنامه را حداقل یکبار اجرا نماید تا برنامه بتواند رویداد android.intent.action.BOOT_COMPLETED را دریافت و اجرا نماید.
Pending Intent
Pending Intent ابزاری می باشد که شما برای یک برنامه دیگر (نظیر مدیریت اعلان، مدیریت هشدار، یا سایر برنامه ها) در نظط می گیرید و سایر برنامه ها را قادر به استفاده از مجوز برنامه شما برای اجرای کد از پیش تعیین شده می سازد.
به منظور اجرای broadcast از طریق pending intent، آن را از طریق متد getBroadcast از کلاس PendingIntent دریافت نمایید. به منظور اجرای یک فعالیت از طریق Pending Intent شما فعالیت را از طریق PendingIntent.getActivity دریافت می نمایید
در اینجا کار ما به اتمام میرسد. امیدواریم نهایت استفاده از این مقاله را برده باشید.
شاد و پیروز باشید.