A  tjenesten 
 er en komponent som kjører i bakgrunnen for å utføre langvarige operasjoner uten å samhandle med brukeren og det fungerer selv om søknaden er ødelagt. En tjeneste kan faktisk ta to stater − State DescriptionStartedA tjenesten er  startet 
 når et program komponent, for eksempel en aktivitet, starter det ved å ringe  startService () 
. Gang startet, kan en tjeneste kjøre i bakgrunnen på ubestemt tid, selv om den komponenten som startet det er destroyed.BoundA tjenesten er  bundet 
 når et program komponent binder seg til det ved å ringe  bindService () Anmeldelser . En bundet tjenesten tilbyr en klient-server-grensesnitt som lar komponenter for å samhandle med tjenesten, kan du sende forespørsler, få resultater, og selv gjøre det på tvers av prosesser med interprosesskommunikasjon (IPC). 
 En tjeneste har livsløpstilbakeringing metoder som du kan iverksette for å overvåke endringer i tjenestens tilstand, og du kan utføre arbeid på det aktuelle tidspunkt. Diagrammet nedenfor til venstre viser livssyklusen når tjenesten er opprettet med startService () og diagrammet til høyre viser livssyklusen når tjenesten er opprettet med bindService ():  (image courtesy: android.com) 
 
 For å opprette en tjeneste, oppretter du en Java-klasse som strekker Tjenesten base klasse eller en av de eksisterende underklasser.  Tjeneste 
 base klasse definerer ulike tilbakeringing metoder og det viktigste er gitt nedenfor. Du trenger ikke å gjennomføre alle callbacks metoder. Men det er viktig at du forstår hver enkelt og implementere de som sikre din app oppfører seg slik brukerne forventer. 
 CallbackDescriptiononStartCommand () Systemet kaller denne metoden når en annen komponent, for eksempel en aktivitet, ber om at tjenesten startes ved ringer  startService () 
. Hvis du implementerer denne metoden, er det ditt ansvar å stoppe tjenesten når arbeidet er gjort, ved å ringe  stopSelf () 
 eller  stopService () 
 methods.onBind () Systemet kaller dette metode når en annen komponent ønsker å binde med tjenesten ved å ringe  bindService () 
. Hvis du implementerer denne metoden, må du gi et grensesnitt som kundene bruker til å kommunisere med tjenesten, ved å returnere en  IBinder 
 objekt. Du må alltid implementere denne metoden, men hvis du ikke ønsker å tillate binding, så bør du gå tilbake  null 
 .onUnbind () Systemet kaller denne metoden når alle klienter har koblet fra en bestemt grensesnitt publisert av service.onRebind () Systemet kaller denne metoden når nye kunder har koblet til tjenesten, etter at det tidligere hadde fått beskjed om at alt hadde koblet i sin  onUnbind (Intent) 
 .onCreate () Systemet kaller denne metoden når tjenesten er første laget med:  onStartCommand () 
 eller  onBind () 
. Denne samtalen er nødvendig for å utføre engangs satt up.onDestroy () Systemet kaller denne metoden når tjenesten er ikke lenger i bruk og blir ødelagt. Tjenesteleverandøren bør iverksette dette til å rense opp noen ressurser som tråder, registrerte lyttere, mottakere, osv 
 Følgende skjelettet tjeneste demonstrerer hver av livssyklusen metoder og minus; 
 pakken com.tutorialspoint, import android.app. Tjenesten; import android.os.IBinder, import android.content.Intent, import android.os.Bundle; public class HelloService strekker tjeneste {/** indikerer hvordan de skal oppføre seg hvis tjenesten blir drept * /int mStartMode; /** Grensesnitt for kunder som binder * /IBinder mBinder; /** Indikerer om onRebind bør brukes * /boolean mAllowRebind; /** Kalles når tjenesten blir opprettet. * /Override Public void onCreate () {} /** Tjenesten er i ferd med, på grunn av et kall til startService () * /Override public int onStartCommand (Intent hensikt, int flagg, int startId) {return mStartMode; } /** En klient er bindende til tjenesten med bindService () * /Override offentlig IBinder onBind (Intent forsett) {return mBinder; } /** Kalles når alle kunder har ubundet med unbindService () * /Override public boolean onUnbind (Intent forsett) {return mAllowRebind; } /** Kalles når en klient er bindende til tjenesten med bindService () * /Override public void onRebind (Intent forsett) {} /** Kalles når Tjenesten er ikke lenger brukes og blir ødelagt * /Override offentlig void onDestroy () {}} 
 Eksempel 
 
 Dette eksempelet vil ta deg gjennom enkle trinn for å vise hvordan du kan lage din egen Android Service. Følg disse trinnene for å endre Android applikasjon vi opprettet i  Hello World Eksempel 
 kapittel: 
 StepDescription1You vil bruke Android StudioIDE å lage en Android-applikasjon og navn det som  Min Application 
 under en Pakken  com.example.My Søknad 
 som forklart i  Hello World Eksempel 
 chapter.2Modify hovedaktivitet fil  MainActivity.java 
 å legge  startService () 
 og  stopService () 
 methods.3Create en ny java-fil  MyService.java 
 under pakken  com.example.My Application 
. Denne filen vil ha gjennomføring av Android tjeneste knyttet methods.4Define din tjeneste i  AndroidManifest.xml 
 fil ved hjelp av < tjeneste ... /> tag. En applikasjon kan ha en eller flere tjenester uten restrictions.5Modify innholdet i  res /layout /activity_main.xml 
 filen standard til å omfatte to knapper i lineære layout.6No trenger å endre noen konstanter i  res /values/strings.xml 
 fil. Android studio ta vare på strengen values7Run søknaden å lansere Android emulator og kontrollere resultatet av de endringer som er gjort i programmet. 
 Følgende er innholdet i den modifiserte hovedaktivitet filen  src /com.example.My Søknad /MainActivity.java 
. Denne filen kan inneholde hver av de grunnleggende livsløps metoder. Vi har lagt til  startService () Hotell og  stopService () 
 metoder for å starte og stoppe tjenesten 
 pakken com.example.My Application;. Import android.os.Bundle, importere android .app.Activity, import android.view.Menu, import android.content.Intent, import android.view.View; public class MainActivity strekker Aktivitet {Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); }Override Public boolean onCreateOptionsMenu (Meny menyen) {getMenuInflater () blåse (R.menu.activity_main, meny).; return true; } //Metode for å starte tjenesten public void startService (Vis visning) {startService (new Intent (getBaseContext (), MyService.class)); } //Metode for å stoppe tjenesten public void stopService (Vis visning) {stopService (new Intent (getBaseContext (), MyService.class)); }} 
 Følgende er innholdet av  src /com.example.My Søknad /MyService.java 
. Denne filen kan ha gjennomføring av en eller flere metoder forbundet med Service basert på krav. For nå har vi tenkt å gjennomføre bare to metoder  onStartCommand () Hotell og  onDestroy () 
 − 
 pakken com.example.My Application, import android.app.Service; import android.content.Intent, import android.os.IBinder, import android.widget.Toast; public class MyService strekker bruk {Override offentlig IBinder onBind (Intent arg0) {return null; }Override Public int onStartCommand (Intent hensikt, int flagg, int startId) {//La det fortsette å kjøre til den er stoppet. Toast.makeText (dette, "Tjenesten i gang", Toast.LENGTH_LONG) .vis (); returnere START_STICKY; }Override Public void onDestroy () {super.onDestroy (); Toast.makeText (dette, "Tjenesten Destroyed", Toast.LENGTH_LONG) .vis (); }} 
 Følgende vil den endrede innholdet i  AndroidManifest.xml 
 fil. Her har vi lagt til < tjeneste ... /> tag å inkludere vår tjeneste: 
 < manifest xmlns: android = "http://schemas.android.com/apk/res/android" pakken = "com.example.MyApplication" android: version = "1" android : versjon = "1.0" > < bruker-SDK android: minSdkVersion = "13" android: targetSdkVersion = "22" /> < søknad android: icon = "@ teikne /ic_launcher" android: label = "@ streng /APP_NAME" android: tema = "@ stil /AppTheme" > < aktivitet android: ". MainActivity" name = android: label = "@ streng /title_activity_main" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets > < tjenesten android: ". MyService" name = /> < /søknad > < /manifest > 
 Etter vil være innholdet i  res /layout /activity_main.xml 
 fil til å omfatte to knapper: 
 < RelativeLayout xmlns: android = "http : //schemas.android.com/apk/res/android "xmlns: verktøy =" 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" verktøy: kontekst = ". MainActivity" > < TextView android: id = "+ id /textView1" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Eksempel på tjenester" android: layout_alignParentTop = "true" android: layout_centerHorizontal = "true "android: Tekststørrelse =" 30dp "/> < TextView android: id = "+ id /textView2" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Tutorials point" android: textcolor = "# ff87ff09" android: Tekststørrelse = "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 = "@ teikne /abc" android: layout_centerVertical = "true" android: layout_centerHorizontal = " true "/> < Button android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /knappen2" android: text = "Start-tjenester" 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 = "Stopp Services" android: id = "+ id /knapp" android: onclick = "stopService" android: layout_below = "+ id /knappen2 "android: layout_alignLeft =" + id /knappen2 "android: layout_alignStart =" + id /knappen2 "android: layout_alignRight =" + id /knappen2 "android: layout_alignEnd =" + id /knappen2 "/> < /RelativeLayout > 
 Etter vil være innholdet i  res /verdier /strings.xml 
 å definere to nye konstanter: 
 < resources > < string name = "APP_NAME" > My Application < /string > < string name = "menu_settings" > Innstillinger < /string > < string name = "title_activity_main" > MainActivity < /string > < /ressurser > 
 La oss prøve å kjøre vår modifiserte  Hello World 
 søknaden vi bare endret!. Jeg antar at du hadde laget ditt  AVD 
 mens du gjør oppsett miljø. For å kjøre programmet fra Android studio, åpne en av prosjektets aktivitets filer, og klikk Kjør ikonet fra verktøylinjen. Android Studio installerer programmet på AVD og starter den, og om alt er bra med set-up og anvendelse, vil det vise følgende Emulator vindu − 
 
 Nå for å starte tjenesten, la oss klikke på  Start tjeneste 
 knappen, vil dette starte tjenesten og som per vår programmering i  onStartCommand () 
 metode, en melding  Tjeneste Startet 
 vil vises på bunnen av simulatoren som følger − 
 
 For å stoppe tjenesten, kan du klikke på Stopp tjeneste knappen 
.

