آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش طریقه استفاده از Service ها

sadeghbarout  10 سال پیش  9 سال پیش
+44 0

با سلام

راستش دیدم این مدت کار بچه ها زیاد به Service ها افتاد و ما فقط مجبور بودیم بگیم برید از سرویس ها استفاده کنید و هیچ آموزشی هم نداشتیم. این شد که گفتم یه آموزشی در این باره بذارم شاید به کارتون بیاد

اما سرویس ها به چه دردی میخورن؟

سرویس ها برای وقتی مناسب هستن که شما بخواید در پس زمینه گوشی کاری رو انجام بدید و مثلا با بسته شدن برنامه تون اون کار متوقف نشه. مثلا چک کردن تاریخ، چک کردن اینترنت، پخش یه فایل، و...

پس کار رو با یه مثال در ادامه پیش میگیریم

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  10 سال پیش
+27 0

خب کار با سرویس ها رو توی 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 استفاده کنید.

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

0 0
ممنون واقعا مفید بود (10 سال پیش)
+1 0
خواهش میکنم (10 سال پیش)
0 0
تشکر از رحماتی که کشیده اید (9 سال پیش)
0 0
منم استفاده کردم مرسی از زحمتتون (9 سال پیش)
0 0
خب الان این فرقش با اکتیویتی چیه ؟ مثلا من با استفاده از alarm manager یه کلاس یا اکتیویتی هر شب ساعت دوازده صدا میزنم ، ولی چون صفحه به صورت شفاف یا transparent هست کاربر متوجه اجرای برنامه نمیشه . و شاید کمتر از یک ثانیه تمام کارایی که میخوام رو انجام میده ، میخوام بدونم دقیقا چه فرقی بین این دو تا هست ، مزایا و معایب هر کدومشم بگید ممنون میشم (9 سال پیش)
+2 0
با بنز هم میشه اسباب کشی کرد ولی کسی این کارو نمیکنه. وقتی شما بخواید یه پروسس طولانی مدت انجام بدید یا مثلا یه آهنگ play کنید یا مثلا یه درخواست بدید به سرور و منتظر پاسخش بمونید اونوقته که سرویس بهترین انتخابه (9 سال پیش)
0 0
Sadeghbarout جان یه مشکل که سرویس داره اینه که بعد از بستن برنامه ، سرویس هم ریست میشه. من هم گیر کردم نمیدونم چیکار کنم. ببین از startforeground نمیخوام استفاده کنمویه چیزی رو به نوتیفیکیشن بار بچسبونم. ممنون میشم اگه راه حلی داری بگی (9 سال پیش)
0 0
آقا صادق میشه فرق بین bound & unBound سرویسز رو هم توضیح بدید کمی متوجه شدم اما کامل نه.مرسی (9 سال پیش)
0 0
بعد از اینکه سرویس kill شد چطور از اول سرویس رو start کنیم؟ (9 سال پیش)
0 0
این خط توی منیفست چه کاری انجام میده؟ androidremote" (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .