آموزش طریقه استفاده از Service ها
با سلام
راستش دیدم این مدت کار بچه ها زیاد به Service ها افتاد و ما فقط مجبور بودیم بگیم برید از سرویس ها استفاده کنید و هیچ آموزشی هم نداشتیم. این شد که گفتم یه آموزشی در این باره بذارم شاید به کارتون بیاد
اما سرویس ها به چه دردی میخورن؟
سرویس ها برای وقتی مناسب هستن که شما بخواید در پس زمینه گوشی کاری رو انجام بدید و مثلا با بسته شدن برنامه تون اون کار متوقف نشه. مثلا چک کردن تاریخ، چک کردن اینترنت، پخش یه فایل، و...
پس کار رو با یه مثال در ادامه پیش میگیریم
خب کار با سرویس ها رو توی 3 مرحله انجام میدیم :
1- ساخت کلاس سرویس :
خب ابتدای کار یه کلاس مثل همیشه بسازید ولی به جای اینکه اون رو extends از Activity کنید، اون رو extends از Service کنید. من اسم کلاسم رو myService میذارم.
این کلاس یه unimpelemented method به نام onBind داره که باید اضافه اش کنید.
خب حالا دیگه آماده است تا کدتون رو تو محل مورد نظرتون بنویسید.
مثلا من متد onStartCommand و onDestroy رو override کردم و دستوراتم رو توش مینویسم :
public class myService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { //دستورات Toast.makeText(getApplicationContext(), "my service started", 1).show(); // return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { //دستورات Toast.makeText(getApplicationContext(), "my service Stoped", 1).show(); // super.onDestroy(); } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } }
شما میتونید on رو بنویسید و با استفاده از Autocompletion، مابقی متد هایی که میتونید توشون دستوراتتون رو بنویسید ، ببینید.
2- تغییرات Manifest :
همونطور که وقتی ما یه Activity میساختیم، اون رو باید توی Manifest برنامه تعریف میکردیم ، باید این کار رو برای Service ها هم انجام بدیم. پس کد زیر توی تگ Application اضافه میکنیم.
<service android:name=".myService" android:process=":remote" />
خب همون طور که میبینید توی بخش name اسم اون کلاسی که تو بخش 1 ساختم رو وارد کردم.
الان کل Manifest من الان به این شکل شده :
<?xml versi encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="test.test.testservice" android:versi android:versi > <uses-sdk android:minSdkVersi /> <application android:ic android:label="@string/app_name" > <activity android:name=".TestServiceActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".myService" android:process=":remote" /> </application> </manifest>
3- فراخوانی و توقف Service:
مرحله آخر کار ، صدا زدن و اجرا کردن Service ه که به شکل زیر انجام میشه :
startService(new Intent(this, myService.class));
همچنین میتونید service تون رو به شکل زیر متوقف کنید :
stopService(new Intent(this, myService.class));
فقط توجه کنید که اینطور نیست که دستورات سرویس خودشون اتوماتیک دائما تکرار بشن . برای تکرار دائمشون مثلا میتونید از AlarmManager استفاده کنید.
امیدوارم که تونسته باشم کمکی بهتون کرده باشم.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .