Service ها در اندروید

سرویس ها به منظور انجام کارهای background در اندروید بوجود آمده اند.این کارها ممکن است برای مدت زمان طولانی در جریان باشند.اجزای تشکیل دهنده یک برنامه اندرویدی می توانند یک سرویس را  اجرا کند.یک سرویس می تواند در background در حال اجرا باشد حتی اگر کاربر برنامه جاری را ترک کند و به برنامه دیگری برود.

در اندروید سه نوع سرویس داریم:

Scheduled:

از اندروید ۵ به بعد مفهومی به اسم سرویس های زمانبندی شده بوجود آمده که توسط آن می توانیم یک کار را برای اجرا در background زمانبندی کنیم.

Started:

اجزای برنامه  می توانند یک سرویس را به وسیله startService() اجرا کنند.این سرویس می تواند به صورت ادامه دار درحال اجرا باشد حتی اگر خود اجرا کننده سرویس از بین برود.معمولا این دسته از سرویس ها خروجی خاصی ندارند و برای انجام یک کار مشخص مثل دانلود یک فایل مورد استفاده قرار می گیرند.

Bound:

اجزای برنامه(مثل یک activity) می توانند به یک سرویس متصل شوند و مانند کلاینت سرور به سرویس به عنوان سرویس دهنده یک درخواست ارسال کنند و جواب آن را دریافت کنند.به طور همزمان چند کلاینت می توانند به یک سرویس متصل شوند و از آن سرویس بگیرند ولی به محض اینکه یکی از آن ها اتصالش از سرویس قطع شد سرویس مورد نظر ما از بین خواهد رفت.

البته که یک سرویس می تواند هم به صورت Started و هم به صورت Bound مورد استفاده قرار بگیرد.همچنین اگر بخواهید یک سرویس را از دید باقی برنامه ها در اندروید مخفی کنید باید از آن را در فایل مانیفست private قرار دهید.

توجه به این نکته ضروری است که سرویس ها در thread اصلی برنامه اجرا می شوند.به عبارتی اگر عملیاتی که در سرویس انجام می دهید نیازمند پردازش سی پی یو هست و یا منجر به لاک می شود بهتر است برای آن یک thread جدید ساخته شود.

برای ساخت یک سرویس نیاز است که از کلاس Service  ارث بری کنید.همچنین callbackهای مورد نیاز را نیز پیاده سازی کنید.در زیر چند callback مورد نیاز نام برده شده است:

onStartCommand():

زمانیکه یک سرویس بنابه درخواست یک جز دیگر شروع به کار می کند این متد فراخوانی  می شود.توجه به این موضوع لازم  که باید سرویس را به وسیله stopSelf() یا  stopService() متوقف کنیم.

onBind():

زمانیکه یک جز برنامه توسط bindService() به سرویس متصل می شود این متد فراخوانی می شود.اگر نمی خواستیم اجزای دیگر به سرویس متصل شوند مقدار null را بازگشت دهیم.

onCreate():

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

onDestroy():

زمانی که یک سرویس از بین می رود این متد صدا زده می شود.فقط باید توجه داشت که باید دراین متد کارهایی از قبیل پاکسازی threadها و … انجام شود.

اندروید سرویسی که در حال کار باشد و یا کاربر به آن وابسته است را با اولویت کمتری kill  می کند.در هر صورت بعد از kill کردن امکان دارد زمانی که مموری کافی در اختیار سیستم عامل قرار گرفت سرویس دوباره شروع به کار کند.البته این موضنوع قابل تنظیم است ک در بخش های بعدی بیشتر توضیح داده خواهد شد.

یک دیدگاه برای “Service ها در اندروید”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *