اندروید

|

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

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

Started

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

Bound

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

یک سرویس روش های بازخوانی چرخه زندگی را داراست که شما می توانید نظارت برتغییرات در بخش سرویس را پیاده سازی کنید و در مرحله مناسب کار را اجرا کنید. نمودار زیر در سمت چپ، چرخه زندگی زمانیکه سرویس با ()startService ساخته شده را نشان می دهد و نمودار سمت راست چرخه زندگی را زمانیکه با ()bindService ساخته شده نشان می دهد.

services

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

callback توضیحات

()onStartCommand

سیستم این روش را زمانی فراخوانی می کند که عنصر دیگری، مانند یک فعالیت، درخواستهایی که سرویس را با فراخوانی ()startService آغاز می کند. اگر این روش را پیاده سازی می کنید مسولیت متوقف کردن سرویس پس از انجام عملیات با شماست که با روش های فراخوانی ()stopSelf یا ()stopService می باشد.

()onBind

سیستم این روش را زمانی فراخوانی می کند که عنصر دیگری بخواهد با فراخوانی ()bindService با سرویس مرتبط شود. اگر این روش را پیاده سازی می کنید شما باید ارتباطی ایجاد کنید که کلاینت ها برای اتصال با سرویس با مراجعه به یک Binder/ object در نظر گرفته شوند. شما باید همیشه این روش را پیاده سازی کنید اما اگر نمی خواهید ارتباطی را یپذیرید سپس باید به null (صفر) برگردید.

()onUnbind

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

()onRebind

سیستم این روش را زمانی فراخوانی می کند که کلاینت های جدید به سرویس متصل شده باشند و سابقا در نظر گرفته شده که همه در (Intent)onUnbind غیرمتصل هستند

()onCreate

سیستم این روش را زمانی فراخوانی می کند که اولین بار سرویس توسط ()onStartCommand یا ()onBind به وجود می آید. این فراخوانی به اجرای به موقع set up نیاز دارد.

()onDestroy

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

در اینجا اسکلت سرویس هر روش چرخه زندگی را شرح می دهد.

servicescode1

مثال

این مثال به شما شان میدهد که با مراحل ساده میتوانید سرویس اندروید خودتان را ایجاد کنید . قدم به قدم مراحل زیر را انجام دهید تا اپلیکیشن اندرویدی که ما در بخش Hello World Example ایجاد کرده بودیم را تغییر دهید

مرحله توضیحات
1 شما از Android StudioIDE استفاده میکنید تا یک اپلیکیشن اندروید ایجاد کنید و برای آن را با عنوان My Application در زیر بسته ی com.example.My Application که در بخش Hello World Example توضیح داده شد نامگذاری کنید.
2 پوشه فعالیت های اصلی MainActivity.java را برای اضافه کردن متدهای startService() و stopService() تغییر دهید.
3 یک فایل جدید جاوا MyService.java در زیر بسته ی com.example.My Application ایجاد کنید. این فایل متد های مربوط به سرویس اندروید را اجرا میکند.
4 سرویس های خود را در فایل AndroidManifest.xml را با استفاده از تگ <service.../> تعریف کنید. یک اپلیکیشن میتواند یک یا بیشتر از سرویس هایی بدون هیچ محدودیت را داشته باشد.
5 متن پیشفرض فایل res/layout/activity_main.xml برای داشتن دو دکمی در linear layout تغییر دهید.
6 نیازی نیست هیچ ثابتی را در فایل res/values/strings.xml تغییر دهید. Android studio از مقادیر رشته ای محافظت میکند.
7 اپلیکیشن را اجرا کنید تا شبیه ساز اندروید اجرا شود و نتایج تغییراتی که در اپلیکیشن ایجاد شده را بررسی کند.

در ادامه محتوای تغییر داده شده ی فایل فعالیت های اصلی src/com.example.My Application/MainActivity.java را میبینید. این فایل میتواند شامل هرکدام از متد های چرخه ی حیات اساسی باشد. ما متدهای ()startService و ()stopService را اضافه کردیم تا سرویس را شروع و پایان دهیم.

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

در ادامه محتوای فایل src/com.example.My Application/MyService.java میبینیم. این فایل یکی یا بیشتر از متد های وابسته به Service مبنی بر تقاضا را اجرا کند.حالما میخواهیم فقط دو متد ()onStartCommand و ()onDestroy را اجرا کنییم:

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

در ادامه میخواهیم محتوای فایل AndroidManifest.xml را تغییر دهیم. اینجا ما با اضافه کردن تگ <service.../> سرویس ا را اضافه میکنیم.

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

در ادامه محتوای فایل res/layout/activity_main.xml برای گذاشتن دو دکمه میباشد:
سرویس ها در اندروید

در ادامه محتوای فایل res/values/strings.xml که برای تعریف دو ثابت میباشد:

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

یاید Hello World! اصلاح شده را که همین حالا تغییر دادیم را اجرا کنیم. فرض میکنیم که شما AVD خود را در طول تنظیمات محیط ایجاد کرده اید. برای اجرای اپلیکیشن از Android studio یکی از پروژه های پوشه های فعالیت خود را باز کنید و run را از دکمه های toolbar کلیک کنید. Android Studio اپلیکیشن شما را روی AVDنصب میکند و شروعش میکند و اگر همه چیز با تنظیمات و اپلیکیشن شما درست کار کند به شکل زیر در شبیه ساز windows نمایش داده خواهد شد.

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

حالا با زدن Start Service سرویس خود را شروع کنید و توسط برنامه نویسی ما در متد ()onStartCommandپیغام a messageService Started در قسمت پایین برنامه شبیه ساز ما نمایان میشود.

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

برای توقف برنامه میتوانید دکمه Stop Service را بزنید.

دریافت آخرین مطالب وبلاگ در کانال داتینه

علی نعیمی

علی نعیمی هستم،دارای لیسانس سخت افزار.
از سال 90 بصورت تخصصی به فراگیری زبان سی شارپ پرداختم. در حال حاضر مسلط به سی شارپ، جاوا، پایگاه داده و زبان های تحت وب هستم.

نظرات
نظر بدهید