کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش کامپوننت های Broadcast Receiver

آموزش کامپوننت های 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)

 

clip_image002[8]

شکل 1

 

Receive سرویس ها را به صورت کد زیر نشان می دهد. (شکل 2)

clip_image004[8]

شکل 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 دریافت می نمایید

 

 

در اینجا کار ما به اتمام میرسد. امیدواریم نهایت استفاده از این مقاله را برده باشید.

شاد و پیروز باشید.

1394/09/03 7415 740
رمز عبور : tahlildadeh.com یا www.tahlildade.com
نظرات شما

نظرات خود را ثبت کنید...