سرویس ها (Services) در اندروید – آموزش برنامه نویسی Android

  • دوشنبه ۲۲ مرداد ۱۳۹۷
  • بازدید ۲,۳۴۸ نفر

تصویر android-services_2284 سرویس ها (Services) در اندروید - آموزش برنامه نویسی Android

سرویس ها (Services) در اندروید

سرویس جزئی از یک برنامه است که کار خود را در پس زمینه و بدون نیاز به ارتباط با کاربر انجام می دهد. هنگامی که برنامه اصلی بسته شود، باز هم سرویس به کارش ادامه خواهد داد.

حالت های یک سرویس در اندروید

ردیفوضعیت و توضیح
1Started

هنگامی که بخشی از یک برنامه مانند activity با استفاده از متد startService() یک سرویس را اجرا می کند، سرویس در حالت started قرار می گیرد. پس از شروع، یک سرویس می تواند در پس زمینه به طور نامحدود اجرا شود، حتی اگر مولفه ای که آن را اجرا کرده بود، بسته شود.

2Bound

یک سرویس زمانی که یک جزء برنامه به آن متصل می شود، با فراخوانی متد bindService() محدود می شود (در وضعیت bound قرار می گیرد). زمانی که یک سرویس در حالت bound قرار داشته باشد، اجزای مختلف برنامه می توانند با سرویس ارتباط برقرار کنند.

هر سرویس چرخه حیات مختص خود را دارد و شما می توانید با پیاده سازی متدهای callback، سرویس را در وضعیت های گوناگون مدیریت کنید. در دیاگرام سمت چپ چرخه حیات سرویسی که توسط متد startService() اجرا شده است را مشاهده می کنید و در سمت راست نیز دیاگرام سرویسی که توسط متد bindService() فراخوانی شده است را مشاهده می کنید.

تصویر android-services_2284_1 سرویس ها (Services) در اندروید - آموزش برنامه نویسی Android

به منظور ایجاد یک سرویس، ابتدا باید یک کلاس جاوا که از کلاس پایه Service مشتق شده است را  در برنامه خود ایجاد کنید. کلاس Service پایه، متد های callback مختلفی دارد که مهمترین آن ها را در جدول زیر مشاهده می کنید. شما نیازی ندارید که همه این متدها را درون سرویس خود پیاده سازی کنید، اما بهتر است نحوه کار و استفاده از آن ها بدانید تا در مواقع لزوم بتوانید از آن ها استفاده کنید.

ردیفمتد callback و توضیحات
1onStartCommand()

سیستم هنگامی که بخشی از یک برنامه مانند activity با استفاده از متد startService() سرویس را اجرا می کند، فراخوانی می شود.

2onBind()

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

3onUnbind()

سیستم این متد را زمانی که تمام کلاینت های متصل به سرویس، اتصال خودشان را قطع کنند، فراخوانی می شود.

4onRebind()

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

5onCreate()

سیستم هنگامی که سرویس برای اولین بار توسط متد onStartCommand() یا onBind() ایجاد می شو، این متد را فراخوانی می کند.

6onDestroy()

سیستم این متد را زمانی که سرویس به مدت طولانی بدون استفاده باشد، فراخوانی می کند. برای آزاد سازی منابعی که سرویس از آن ها استفاده می کند، باید این متد را پیاده سازی کنید.

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

مثال

مثال زیر نحوه ایجاد یک سرویس اندرویدی را به صورت گام به گام آموزش می دهد. مراحل زیر را برای اصلاح مثال ساده در اندروید استودیو که قبلا ایجاده کرده بودیم، دنبال کنید:

مرحلهتوضیحات
1

با استفاده از نرم افزار Android StudioIDE یک پروژه ایجاده کنید و نام آن را My Application با نام پکیج com.example.test1.myapplication انتخاب کنید.

2

فایل MainActivity.java را به منظور اضافه کردن متد های startService() و stopService() ویرایش کنید.

3

یک فایل جدید با نام MyService.java تحت پکیج com.example.test1.myapplication اضافه کنید. این فایل حاوی متدهای مربوط به سرویس اندرویدی ما خواهد بود.

4

سرویس خود را در فایل AndroidManifest.xml و با استفاده از تگ <service…/> تعریف کنید. یک برنامه می تواند یک یا چند سرویس داشته باشد (بدون محدودیت).

5

برای اضافه کردن دو دکمه به برنامه فایل res/layout/activity_main.xml را ویرایش کنید.

6

نیاز به تغییر ثوابت موجود در فایل res/values/strings.xml نیست.

7

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

در زیر محتوای ویرایش شده فایل MainActivity.java را مشاهده می کنید. این فایل می تواند شامل هر یک از متدهای مربوط به چرخه حیات سرویس باشد. ما متدهای startService() و stopService() را به منظور مدیریت اجرا و توقف سرویس، اضافه کرده ایم.

در زیر محتوای فایل MyService.java را مشاهده می کنید. شما می توانید بر اساس نیاز خود یک یا چند متد مربوط به سرویس را در این فایل پیاده سازی کنید. در اینجا ما فقط دو متد پر استفاده onStartCommand() و onDestroy() را پیاده سازی کرده ایم.

در ادامه باید فایل AndroidManifest.xml را برای تعریف سرویس اندرویدی خود ویرایش کنیم. در اینجا ما با استفاده از تگ <service…/> سرویس خود را معرفی کرده ایم.

در زیر محتوای فایل res/layout/activity_main.xml را مشاهده می کنید که دو دکمه به آن اضافه کرده ایم.

خوب حالا برنامه ای که ایجاد کرده ایم را اجرا می کنیم. ما فرض می کنیم شما AVD (Android Virtual Device) خود را حین تنظیم محیط برنامه نویسی اندروید ایجاد کرده اید. به منظور اجرای برنامه در اندروید استودیو، یکی از فایل های activity برنامه را باز کنید سپس بر روی نماد اجرا کلیک کنید. اندروید استودیو این برنامه را در AVD نصب کرده و آن را اجرا می کند و اگر همه چیز به درستی تنظیم شده باشد، یک پنجره شبیه ساز مانند شکل زیر نمایش داده خواهد شد:

تصویر android-services_2284_2 سرویس ها (Services) در اندروید - آموزش برنامه نویسی Android

اکنون می توانید سرویس خود را با استفاده از دکمه Start Service اجرا کنید و همچنین می توانید از دکمه Stop Service نیز برای متوقف کردن آن استفاده کنید.

تصویر android-services_2284_3 سرویس ها (Services) در اندروید - آموزش برنامه نویسی Android

ثبت نظر
ریفریش کنید!
نظرات کاربران (۱ مورد)
  1. تصویر آواتار کاربر 0
    شهرام نظری پنجشنبه , 11 مهر

    خیلی عالی بود.