Handledning för Android-tjänster: Hur kör jag ett program i bakgrunden?



Denna handledning för Android-tjänster hjälper dig att förstå hur du utför åtgärder i bakgrunden som att spela musik, det har inget användargränssnitt anslutet

Ofta använder du flera applikationer på din smartphone, kanske du vill byta från en applikation till en annan men också se till att alla dina applikationer förblir aktiva i bakgrunden. Dessa är inget annat än de tjänster som erbjuds av . Så, den här artikeln på Android Services Tutorial hjälper dig att förstå hur du arbetar med tjänsterna.

Jag kommer att täcka följande ämnen:





Vad är Android Services?

Service är i grunden en process. Android-tjänst är en komponent som körs i bakgrunden för att utföralångvariga operationer utan att interagera med användaren och det fungerar även om applikationen förstörs.En annan applikationskomponent kan starta en tjänst och den fortsätter att köras i bakgrunden även om du byter till en annan applikation.

Dessutom kan en komponent binda sig till en tjänst för att interagera med den och även utföra interprocesskommunikation.



keyerror: 'a'

Notera: Android.app.Service är en underklass av ContextWrapper-klassen och Android-tjänsten är inte en tråd eller separat process.

Android- Services livscykel

Android Services livscykel kan ha två typer av tjänster. Livscykeln för en tjänst följer två olika vägar, nämligen:

  1. Satte igång
  2. Bunden

Satte igång



En tjänst startas när en applikationskomponent ringer starta service () metod. En gång kan en tjänst köras i bakgrunden på obestämd tid, även om den komponent som ansvarar för starten förstörs. Det stoppas med hjälp av stopService () metod. Tjänsten kan också stoppa sig själv genom att ringa stopSelf () metod.

Bunden

En tjänst är bunden när en applikationskomponent binds till den genom att ringa bindService () . Bound-tjänsten erbjuder ett klient-server-gränssnitt som gör att komponenter kan interagera med tjänsten, skicka förfrågningar och få resultat. Det bearbetar över interprocesskommunikation (IPC). Klienten kan frigöra tjänsten genom att ringa till unbindService () metod.

Livscykel för Android-tjänster - Handledning för Android-tjänster - Edureka

Gå vidare till nästa avsnitt i den här artikeln om Android Services, låt oss diskutera olikametoder under serviceklassen.

Handledning för Android-tjänster: Metoder

Det finns några metoder som du enkelt kan utföra operationer i alla applikationer. Några av dem är:

MetodBeskrivning
onStartCommand ()

Denna metod kallas när någon annan komponent, som t.ex. en aktivitet, begär att tjänsten ska startas, genom att ringa starta service () .

Det är ditt ansvar att stoppa tjänsten när motsvarande arbete utförs med hjälp av stopSelf () eller stopService () metoder.

frigöra ()

Anropar den här metoden när en annan komponent vill binda till tjänsten genom att ringa bindService () .

För att implementera detta måste du tillhandahålla ett gränssnitt som klienter använder för att kommunicera med tjänsten. Det returnerar en IBinder objekt. Om du inte vill tillåta bindning, återvänd null .

onUnbind ()

Systemet anropar den här metoden när alla klienter kopplas bort från ett visst gränssnitt som publiceras av tjänsten.

onRebind ()

Anropar den här metoden när nya klienter är anslutna till tjänsten efter att det tidigare hade meddelats att alla är frånkopplade onUnbind (avsikt) .

onCreate ()

Systemet anropar den här metoden när tjänsten skapas först med hjälp av onStartCommand () eller frigöra () . Det är nödvändigt att utföra en engångsinställning.

onDestroy ()

Denna metod kallas när tjänsten inte längre används och förstörs. Din tjänst bör implementera detta för att rensa upp alla resurser som trådar, registrerade lyssnare, mottagare etc.

Skelettkod

offentlig klass MainActivity utökar aktivitet {privat TextView textView privat BroadcastReceiver-mottagare = ny BroadcastReceiver () {@Override public void onReceive (Context context, Intent intention) {Bundle bundle = intention.getExtras () if (bundle! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Download complete. Download URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Nedladdning gjort')} annat {Toast.makeText (MainActivity.this, 'Download failed', Toast.LENGTH_LONG) .show () textView.setText ('Download failed')}}} @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @ Override skyddad ogiltig onResume () {super.onRes ) registerReceiver (mottagare, ny IntentFilter (DownloadService.NOTIFICATION))} @Override skyddad tomrum onPause () {super.onPause () unregisterReceiver (mottagare)} offentligt tomrum onClick (Visa vy) {Intent intention = new Intent (this, DownloadService.class) // lägg till information för tjänsten vilken fil som ska laddas ner och var du ska lagra intention.putExtra (DownloadService.FILENAME, 'index.html') intention.putExtra (DownloadService.URL, 'www.edureka.co') startService (intention) textView.setText ('Service startade')}}

I det här exemplet kan du se metoderna som onCreate () , på CV () , onPause () . Dessa metoder utgör strukturen för tjänsterna i Android.

Nu när vi kommer till den praktiska delen av den här Android Services-handledningen, låt oss sehur man skapar en tjänst och hanterar den.

Demo

Låt oss se hur man spelar musik i bakgrunden. För att göra det kommer jag att använda Andriod Studio .

Steg 1

Skapa ett nytt tomt projekt. Namnge ditt projekt och klicka på Java-mappen och klicka på Huvudaktivitet . Lägg först till Mediaspelare så att du kan importera spelardetaljer som start, ställa in slingan och så vidare.

paket com.example.mydemoapplication importera androidx.appcompat.app.AppCompatActivity public class MainActivity utökar AppCompatActivity {@Override skyddat tomrum onCreate (Bundle sparadInstanceState) {super.onCreate (sparadInstanceState) setContentView (R.layout.actlayer_mayer_player) (detta, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Obs! Om du använder den för första gången, glöm inte att aktivera BIOS. Du kan göra detta genom att starta om ditt system.

Du måste lägga till en virtuell enhet. Klicka bara på Öppna AVD-chef.

Välj en enhet efter eget val så är du redo att gå!

Detta kommer bara att köras när skärmen är aktiv men för att applikationen ska fungera även i bakgrunden måste du lägga till några fler kodrader i activity_main.xml fil.

Steg 2

När du har kört motsvarande kod kommer du att kunna köra applikationen och kommer att kunna spela musiken i bakgrunden, dvs om någon annan applikation öppnas kommer detta ljud fortfarande att spelas.

Låt oss se hur detta kan göras.

  • Skapa en annan klass i Java-mappen och namnge den. Här har jag kallat det ' MyService '.
  • Denna klass utökar serviceklassen.
  • När du har tjänsteklassmetoderna implementerar du metoderna genom att klicka alt + Enter.
  • Efter detta måste du åsidosätta metoderna. Så högerklicka på fönstret för att få alternativen.
  • Generera åsidosättningsmetoderna, välj onStartCommand () och OnDestroy ().
  • Redigera onStartCommand () metoder genom att lägga till följande kod .:
MediaPlayer-spelare = MediaPlayer.create (detta, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Notera: Ta bort den här koden i Huvudaktivitet.

  • Detta kommer att orsaka ett fel som ber dig att ta bort uttalandet. Så ta bort returuttalandet och förklara MediaPlayer som en privat metod och returnera START_STICKY . Detta returnerar startstatus.
  • Lägg till player.stop () i onDestroy () metod.

Steg 3

Gå till nötkött och gå till layouter, klicka på android_main.xml för att hämta applikationens XML-fil.

  • Ta bort TextView och ersätt den med LinearLayout och lägg till knappar. Lägg till motsvarande kod.
<Linjär layout Android:orientering= 'vertikal' Android: layout_width= 'match_parent' Android: layout_höjd= 'wrap_content' Android: layout_centerVertical= 'sant' verktyg:ignorera= 'MissingConstraints'><Knapp Android: id= '@ + id / buttonStart' Android:text= 'Starta tjänst' Android: layout_width= 'wrap_content' Android: layout_höjd= 'match_parent'/><Knapp Android: id= '@ + id / buttonStop' Android:text= 'Stoppa tjänst' Android: layout_width= 'wrap_content' Android: layout_höjd= 'match_parent'/>Linjär layout>
  • När du har gjort detta, gå tillbaka till Huvudaktivitet klass och lägg till motsvarande kod för att länka XML-filen och MyServiceClass.
paket com.exempel.newproject importera androidx.appcompat.app.AppCompatActivity public class MainActivity utökar AppCompatActivity implementerar View.OnClickListener {privat Knapp start, stoppa @Override skyddad tomrum onCreate (Bundle sparadInstanceState) {super.onCreate (sparadInstanceState) setClay (setRent) .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (detta) stop.setOnClickListener (detta)} @ Override offentligt tomrum onClick (Visa vy ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}

Steg 4

När du är klar med att länka klasserna, kör vi koden.

Obs: Lägg till serviceklassnamnet i filen AndroidManifiest.xml.

Låt oss sedan köra koden.

När du har startat tjänsten körs den i bakgrunden även om en annan applikation öppnas. Du kan starta eller stoppa tjänsten genom att klicka på knapparna.

Detta är en enkel demo där du har lärt dig hur du arbetar med Android Services.

Så med detta kommer vi till slutet av den här artikeln om 'Android Services Tutorial'.Jag hoppas att du är tydlig med de ämnen som behandlas i den här bloggen.

Nu när du har gått igenom vår blogg för Android-tjänster kan du kolla in Edurekas för att snabbt starta ditt lärande.

Har du frågor? Glöm inte att nämna dem i kommentarerna till denna blogg om 'Android Services Tutorial'. Vi återkommer.