استفاده از سرویس در اندروید بخش دوم

[two_third]

به قسمت دوم آموزش سرویس در اندروید رسیدیم همانطور که در قسمت قبل قول داده بودیم، با یک مثال به طور گام به گام نشان می دهیم که چگونه سرویس اندروید خود را ایجاد کنید. مراحل زیر را دنبال کنید و برنامه قبل را که در قسمت Hello world نوشتیم، تغییر دهید.

[/two_third] [one_third_last]

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

[/one_third_last]

 

گام اول:

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

گام دوم:

کلاس جاوای جدیدی با نام MyService.java ایجاد می کنیم. این کلاس شامل پیاده سازی متدهای مربوط به سرویس اندروید خواهد بود.

گام سوم:

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

گام چهارم:

محتوای پیش فرض فایل res/layout/activity_main.xml را طوری تغییر می دهیم که دو button در یک linear layout داشته باشد.

گام پنجم:

نیازی به تغییر هیچ کدام از رشته های ثابت موجود در res/values/string.xml نمی باشد. اندروید استودیو به مقادیر رشته ای بسیار اهمیت می دهد.

گام ششم:

اجرای برنامه و وصل شدن به ایمولاتور و مشاهده نتیجه تغییرات

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


package com.example.My Application;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.content.Intent;
import android.view.View;

public class MainActivity extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.activity_main, menu);
      return true;
   }

   // Method to start the service
   public void startService(View view) {
      startService(new Intent(getBaseContext(), MyService.class));
   }

   // Method to stop the service
   public void stopService(View view) {
      stopService(new Intent(getBaseContext(), MyService.class));
   }
}

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

package com.example.My Application;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;

public class MyService extends Service {
   
   @Override
   public IBinder onBind(Intent arg0) {
      return null;
   }

   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
      // Let it continue running until it is stopped.
      Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
      return START_STICKY;
   }
   
   @Override
   public void onDestroy() {
      super.onDestroy();
      Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
   }
}

فایل AndroidManifest.xml بعد از اضافه کردن سرویس به شکل زیر تغییر می کند:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.MyApplication" android:versionCode="1" android:versionName="1.0" >
   
   <uses-sdk android:minSdkVersion="13" android:targetSdkVersion="22" />
   
   <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
       
       <activity android:name=".MainActivity" android:label="@string/title_activity_main" >
       
          <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER"/>
          </intent-filter>
       
       </activity>
       
       <service android:name=".MyService" />
       
   </application>
</manifest>

فایل activity_main با دو button نیز به شکل زیر خواهد بود:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Example of services" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp" />
      
      <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point " android:textColor="#ff87ff09" android:textSize="30dp" android:layout_above="@+id/imageButton" android:layout_centerHorizontal="true" android:layout_marginBottom="40dp" />

    <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/abc" android:layout_centerVertical="true" android:layout_centerHorizontal="true" />

    <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="Start Services" android:onClick="startService" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" />

    <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Stop Services" android:id="@+id/button" android:onClick="stopService" android:layout_below="@+id/button2" android:layout_alignLeft="@+id/button2" android:layout_alignStart="@+id/button2" android:layout_alignRight="@+id/button2" android:layout_alignEnd="@+id/button2" />

</RelativeLayout>

فایل res/values/strings نیز به شکل زیر می باشد:


<resources>
    <string name="app_name">My Application</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
</resources>


خروجی به شکل زیر خواهد بود

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

حال برای شروع سرویس روی دکمه Start Service کلیک می کنیم و سرویس شروع به فعالیت می کند و پیامی با عنوان “Service Started” در پایین صفحه نمایش داده می شود:

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

برای پایان سرویس هم می توانید روی دکمه Stop کلیک نمایید.

فاطمه زکایی

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

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    پژمان پاسخ

    سلام

    ادامه آموزش های اندروید را لطفا بذارید.

    ممنون

ما یک پرسشنامه‌ی کوچولو داریم، که قول میدیم وقتتون رو خیلی نمی‌گیره، ولی کلی به ما کمک می‌کنه، چون هم assessment مونه ,و هم شما به ما در این زمینه کمک میکنید.بزن بریم