آشنایی با App Component ها در اندروید
App Component ها بخش های مهم و ضروری برنامه های اندروید هستند. هریک از این Component ها, به عنوان یک ورودی برای برنامه هستند که این ورود میتواند توسط یک سیستم و یا یک شخص باشد. چهار نوع Component وجود دارد که در این مقاله مورد بررسی قرار میدهیم. این چهار نوع هریک برای اهداف خاصی استفاده میشوند و همچنین lifecycle مختص به خود را دارند. به این معنا که شیوه ایجاد و لغو آنها با یکدیگر متفاوت است. موارد زیر چهار نوع Component هستند که در این مقاله مورد بررسی قرار میدهیم:
- Activity
- Service
- Broadcast Receiver
- Content Provider
Activity
به بخشی از برنامه اتلاق میشود که به عنوان رابط با کاربر است. Activity ها با یکدیگر تعامل دارند و نتیجه این تعامل یک ظاهر منسجم برای برنامه است که کاربر از طریق آن میتواند به امکانات برنامه دسترسی پیدا کند. برای مثال در یک نرم افزار مدیریت رستوران, یک Activity برای ثبت سفارش ها, یک Activity برای سفارش های دریافتی و به همین ترتیب صفحاتی کاربر استفاده کننده تعبیه شده است. از تعامل این صفحات با یکدیگر, درخواست های رستوران مدیریت میشود. Activity ها باید موارد زیر را مدیریت کنند:
- Activity ها باید شرایطی را فراهم کنند تا کاربر بتواند به راحتی میان آنها جابجا شود. در کنار جابجایی کاربر, باید شرایطی را فراهم کند تا سیستم این جابجایی ها را هماهنگ و مدیریت کند.
- اگر پردازشی با شکست مواجه شد, Activity باید به حالت پیش از پردازش بازگردد.
- در یک Activity باید بررسی شود که کاربر به چه مواردی در صفحه فعلی اهمیت میدهد تا مطمعن شود پردازش مد نظر در صفحه فعلی در حال انجام است.
Service
Service, یک Component است که پردازش های طولانی مدتی را در background انجام میدهد. Service ها شامل رابط کاربری و اجزا ظاهری نمیشوند. برای مثال ممکن است یک برنامه اطلاعاتی را با Server تبادل کند, در حالی که کاربر از یک برنامه دیگر استفاده میکند. Component های دیگر مانند Activity ها میتوانند Service ها را ایجاد و یا با آنها ارتباط برقرار کنند. Service ها در دو حالت اجرا میشوند:
- در حالت اول, کاربر استفاده کننده, میخواهد که این Service در background اجرا شود. بنابراین درخواست استفاده از Service توسط کاربر داده میشود. حال اگر اجرای این Service با مشکل مواجه شود, به عنوان یک خطا و مشکل است. برای مثال وقتی کاربر یک فایل را دریافت میکند, این انتظار را دارد که اگر برنامه دیگری را اجرا کرد, این فایل در یک پردازش background دریافت شود. حال اگر این پردازش متوقف شود, به منزله شکست پردازش است.
- در حالت دوم که حالت عادی Service ها است, کاربر از فعالیت Service آگاه نیست. به این ترتیب اگر پردازش آن به صورت موقت لغو گردد و پس از مدتی از سرگرفته شود, مشکلی بوجود نمیآید. چنین Service هایی اگر حافظه داخلی دستگاه, به فضای بیشتری احتیاج داشته باشد, به صورت موقت میتوانند لغو شوند.
گاهی Service ها در نقش یک API ظاهر میشوند. به این معنا که برنامه های دیگر از Service یک برنامه به عنوان API استفاده میکنند. در این صورت, سیستم Dependency های یک Service را شناسایی میکند و یک Service را برای پردازش مد نظر آماده نگه میدارد. بنابراین اگر یک پردازش و Service های آن از نوع حالت اول Service ها باشد, Dependency های آن نیز در این حالت در نظر گرفته میشود. برای مثال, یک نرم افزار دانلود داریم که Service آن به عنوان API است. فرض میکنیم پردازش های این Service در دسته دوم قرار دارد. حال اگر یک برنامه دیگر از Service ذکر شده استفاده کند و درخواست آن از نوع اول باشد, به این معنا که کاربر به اجرای Service اهمیت دهد, Service نرم افزار دانلود کننده نیز در دسته اول قرار میگیرد.
Broadcast Receiver
با استفاده از Broadcast Receiver, میتوانیم Event ها را به برنامه ارسال کنیم. ارسال این Event ها در حالتی متفاوت از روشی که کاربر استفاده میکند, است. این اطلاعات میتوانند حتی در زمانی که برنامه در حال اجرا نیست, به برنامه ارسال شوند. برای مثال وقتی یک زمان را تنظیم میکنیم تا یک پیام هشدار را از طریق Notifcation به کاربر ارسال کند, از Broadcast Receiver استفاده میکنیم. در این حالت حتی اگر برنامه در حال اجرا نباشد, پیام هشدار نمایش داده میشود. پیام هایی مانند خاموش شدن صفحه, low battery, screenshot از طریق Broadcast Receiver اعلام میشود.
Content Providers
Content Provider, مجموعه ای از داده های به اشتراک گذاشته شده را مدیریت میکند. برنامه های دیگر میتوانند از طریق Content Provider, به برنامه درخواست دهند و در صورت مجاز بودن به این اطلاعات دسترسی پیدا کنند. برای مثال میخواهیم اطلاعات یکی از مخاطبین که در تلفن همراه ذخیره شده است را بخوانیم, به برنامه Contact درخواست ارسال میکنیم و اطلاعات ذخیره شده شخص را دریافت میکنیم. در واقع در اینجا این Component در نقش یک API ظاهر میشود.
Component های اندروید برای استفاده از طریق برنامه های دیگر ایجاد شدهاند. برای مثال وقتی میخواهیم یک نصویر را ذخیره کنیم, نیاز نیست تا حتما تمام مراحل ذخیره سازی تصاویر را پیاده سازی کنیم. میتوانیم به نرم افزار دوربین موجود بر روی دستگاه درخواست دهیم و پس از ذخیره تصویر, آنرا به برنامه ارسال کنیم. در اینجا باید این نکته را ذکر کرد که وقتی از Component یک برنامه استفاده میکنیم, در واقع پردازش مختص به برنامه دیگر را اجرا میکنیم. در مثال ذخیره تصویر, وقتی نرم افزار دوربین اجرا میشود, دیگر پردازش مرتبط به برنامه ما نیست و پردازش نرم افزار دوربین در جریان است. به این تریتب نرم افزار های اندروید, برخلاف بیشتر سیستم های دیگر, به صورت Single Entry Point نیستند. به ای معنا که تابع main اجرا کننده را ندارند. همچنین باید توجه داشت که به دلیل لایه بندزی سطوح دسترسی در اندروید, یک برنامه نمیتواند مستقیما به Component برنامه دیگر دسترسی پیدا کند. این دسترسی توسط سیستم اندروید به صورت مستقیم امکان پذیر است اما برای استفاده توسط برنامه های دیگر باید از Intent استفاده شود.
در این مقاله سعی بر این شد تا با Component های اندروید آشنا شویم.
با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.