بررسی service ها - در برنامه نویسی اندروید

بررسی سرویس در اندروید

service یک جزءی از برنامه است که می تواند عملیات طولانی مدت را در پس زمینه انجام دهد. serviceها شامل UI نیستند, به این معنی که چیزی به کاربر نمایش نمیدهند. پس از شروع، یک service ممکن است برای مدتی به اجرا ادامه دهد، حتی پس از اینکه کاربر به برنامه دیگری سوئیچ کند و برنامه فعلی را ببندد. علاوه بر این، یک کامپوننت می تواند به یک سرویس متصل شود تا با آن تعامل داشته باشد و حتی ارتباطات بین فرآیندی (IPC) را با آن انجام دهد. به عنوان مثال، یک سرویس می‌تواند عملیات ارتباط شبکه را انجام دهد، موسیقی پخش کند، عملیات I/O فایل را انجام دهد یا با ارائه‌دهنده محتوا (اکتیویتی) تعامل داشته باشد، که همه اینا در پس زمینه انجام میشود.

احتیاط : یک سرویس در ترد اصلی فرآیند میزبانی خود اجرا می شود. این سرویس ترد خاص خود را ایجاد یا اجرا نمی کند و در یک فرآیند جداگانه اجرا نمی شود مگر اینکه شما خلاف آن را مشخص کنید. برای جلوگیری از خطاهای Application Not Responding (ANR) باید هرگونه عملیات مسدود کردن را در یک ترد جداگانه در سرویس اجرا کنید.

سرویس ها در اندروید

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

در اندروید سه نوع سرویس مختلف وجود دارد:

Foreground

یک سرویس پیش زمینه یا همان foreground عملیاتی را انجام می دهد که برای کاربر قابل توجه است. به عنوان مثال، یک برنامه صوتی از یک سرویس foreground برای پخش یک آهنگ صوتی استفاده می کند. سرویس پیش زمینه باید یک اعلان یا نوتیفیکیشن را بصورت دائمی هنگام اجرا بودن نمایش دهد. سرویس‌های پیش‌زمینه حتی زمانی که کاربر با برنامه ارتباط برقرار نمی‌کند، همچنان میتوانند اجرا شوند.

هنگامی که از یک سرویس پیش زمینه استفاده می کنید، باید یک اعلان نمایش دهید تا کاربر از اجرای سرویس مطلع باشد. این اعلان را نمی توان رد کرد مگر اینکه سرویس مربوطه متوقف شود یا از پیش زمینه حذف شود.

Background

یک سرویس پس زمینه یا همان background عملیاتی را انجام می دهد که کاربرمستقیماً از آن مطلع نمی باشد. به عنوان مثال، اگر یک برنامه بخواهد فشرده سازی فضای ذخیره سازی خود را انجام بدهد, معمولاً از یک سرویس پس زمینه استفاده خواهد کرد.

اگر برنامه شما از نسخه API 26 یا بالاتر را استفاده کند. زمانی که خود برنامه در پیش‌زمینه (در حال اجرا و در دید کاربر) نباشد, سیستم محدودیت‌هایی را برای اجرای سرویس‌های background اعمال می‌کند. به عنوان مثال، شما نباید در سرویس پس زمینه به اطلاعات موقعیت مکان دسترسی داشته باشید. در عوض، وظایف را با استفاده از WorkManager زمان بندی کنید.

Bound

یک سرویس زمانی محدود می شود که یک کامپوننت از برنامه مانند یک اکتیویتی با فراخوانی bindService() به آن متصل شود. یک سرویس محدود یا همان Bound یک رابط گیرنده-سرور ارائه می دهد که به اجزا اجازه می دهد با سرویس تعامل داشته باشند، درخواست ها را ارسال کنند، نتایج را دریافت کنند، و حتی این کار را در سراسر فرآیندهای با ارتباطات بین فرآیندی (IPC) انجام دهند. یک service محدود فقط تا زمانی اجرا می شود که یک  کامپوننت از برنامه به آن متصل باشد. چندین مؤلفه می توانند به طور همزمان به سرویس متصل شوند، اما وقتی همه آنها از هم جدا شوند، سرویس از بین می رود.

خلاصه بررسی

اگر چه این توضیحات بطور کلی انواع سرویس‌ها را به طور جداگانه مورد بحث قرار داده است. اما service شما می‌تواند به هر دو صورت کار کند. می‌توان آن را راه‌اندازی کرد تا به‌طور نامحدود در حال اجرا باشد و همچنین امکان اتصال را نیز برای آن فراهم کرد. این کار فقط به این بستگی دارد که شما کدام متد بازگشتی را صدا می زنید. onStartCommand() برای اجازه دادن به کامپوننت ها برای شروع آن و onBind() برای اجازه دادن به اتصال شدن به آن.

صرف نظر از اینکه service شما شروع یا محدود شده است یا هر دو، هر کامپوننت از برنامه می تواند با همان روش Intent که یک اکتیویتی برای اجرای آن سرویس انجام میدهد به آن سرویس (حتی از یک برنامه دیگر) متصل شود. با این حال، می‌توانید سرویس را در فایل مانیفست اضافه کنید (اصلاحا اعلام کردن) تا دسترسی سایر برنامه‌ها را مسدود کنید.

 

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

مقالات پیشنهادی

اندروید

اندروید یک سیستم عامل می باشد که توسط گوگل توسعه داده میشود, این سیستم عامل بر پایه نسخه ی اصلاح شده ی هسته ی لینوکس و دیگر نرم افزار های متن باز طراحی شده است و ...


۱۰۵۵
۰
۲۹ آبان ۱۳۹۹

هک و امنیت

در تعریف کلی این واژه می توان گفت که به پیدا کردن راه های نفوذ به یک حریم شخصی و استفاده غیر مجاز از آن را هک می نامیم. هدف از هک می تواند ...


۹۵۹
۰
۱۳ آذر ۱۳۹۹

بک لینک چیست؟

بک لینک (Back Link) به لینک دادن یک سایت به سایت دیگر گفته میشود که یک فاکتور مهم و اساسی در سئو هر سایتی می باشد.


۹۹۲
۰
۲۲ آذر ۱۳۹۹

نود جی اس

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


۹۱۲
۰
۱۲ آذر ۱۳۹۹

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52