Android Services Tutorial: Hvordan køres et program i baggrunden?



Denne Tutorial for Android-tjenester hjælper dig med at forstå, hvordan du udfører operationer i baggrunden, f.eks. Afspilning af musik. Den har ikke noget brugergrænseflade

Brug ofte flere applikationer på din smartphone, og du vil muligvis skifte fra en applikation til en anden, men også sikre, at alle dine applikationer forbliver aktive i baggrunden. Dette er intet andet end de tjenester, der tilbydes af . Så denne artikel om Android Services-vejledning hjælper dig med at forstå, hvordan du arbejder med tjenesterne.

Jeg vil dække følgende emner:





Hvad er Android Services?

Service er dybest set en proces. Android-tjeneste er en komponent, der kører i baggrunden for at udførelangvarige operationer uden at interagere med brugeren, og det fungerer, selvom applikationen er ødelagt.En anden applikationskomponent kan starte en tjeneste, og den fortsætter med at køre i baggrunden, selvom du skifter til en anden applikation.

Derudover kan en komponent binde sig til en tjeneste for at interagere med den og også udføre interprocess-kommunikation.



Bemærk: Android.app.Service er en underklasse af ContextWrapper-klassen, og Android-tjenesten er ikke en tråd eller en separat proces.

Android- Services livscyklus

Android Services livscyklus kan have to former for tjenester. Tjenestens livscyklus følger to forskellige veje, nemlig:

  1. Startede
  2. Bundet

Startede



hvad er forskellen mellem hashmap og hashtable

En tjeneste startes, når en applikationskomponent ringer startService () metode. Når en tjeneste er startet, kan den køre i baggrunden på ubestemt tid, selvom den komponent, der er ansvarlig for starten, ødelægges. Det stoppes ved hjælp af stopService () metode. Tjenesten kan også stoppe sig selv ved at ringe til stopSelf () metode.

Bundet

En tjeneste er bundet, når en applikationskomponent binder sig til den ved at ringe bindService() . Bound-service tilbyder en klient-server-grænseflade, der giver komponenter mulighed for at interagere med tjenesten, sende anmodninger og få resultater. Det behandles på tværs af inter-proces kommunikation (IPC). Klienten kan afbinde tjenesten ved at ringe til unbindService () metode.

Android Service livscyklus - Vejledning i Android Services - Edureka

Gå videre til næste afsnit af denne artikel om Android Services, lad os diskutere de forskelligemetoder under serviceklassen.

Vejledning til Android-tjenester: Metoder

Der er et par metoder, hvor du nemt kan udføre operationer på ethvert program. Nogle af dem er:

MetodeBeskrivelse
onStartCommand ()

Denne metode kaldes, når enhver anden komponent, som f.eks. En aktivitet, anmoder om, at tjenesten startes, ved at ringe startService () .

Det er dit ansvar at stoppe tjenesten, når det tilsvarende arbejde udføres ved hjælp af stopSelf () eller stopService () metoder.

løsne ()

Kalder til denne metode, når en anden komponent vil binde sig til tjenesten ved at ringe bindService() .

For at implementere dette skal du give en grænseflade, som klienter bruger for at kommunikere med tjenesten. Det returnerer en IBinder objekt. Hvis du ikke vil tillade binding, skal du returnere nul .

onUnbind ()

Systemet kalder denne metode, når alle klienter er afbrudt fra en bestemt grænseflade, der er offentliggjort af tjenesten.

onRebind ()

Opkalder denne metode, når nye klienter er forbundet til tjenesten, efter at det tidligere var blevet underrettet om, at alle er afbrudt onUnbind (hensigt) .

onCreate ()

Systemet kalder denne metode, når tjenesten oprettes første gang ved hjælp af onStartCommand () eller løsne () . Det er nødvendigt at udføre en engangsopsætning.

onDestroy()

Denne metode kaldes, når tjenesten ikke længere bruges og ødelægges. Din tjeneste skal implementere dette for at rydde op i ressourcer såsom tråde, registrerede lyttere, modtagere osv.

Skeletkode

offentlig klasse MainActivity udvider aktivitet {privat TextView textView privat BroadcastReceiver-modtager = ny BroadcastReceiver () {@Override offentlig ugyldighed onReceive (Kontekstkontekst, hensigtsintention) {Bundle bundle = intention.getExtras () if (bundle! = null) {Strengstreng = 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 ('Download done')} ellers {Toast.makeText (MainActivity.this, 'Download failed', Toast.LENGTH_LONG) .show () textView.setText ('Download failed')}}} @Override offentligt tomrum onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @ Override beskyttet ugyldigt onResume () {super.ones ) registerReceiver (modtager, nyt IntentFilter (DownloadService.NOTIFICATION))} @Override beskyttet tomrum onPause () {super.onPause () unregisterReceiver (modtager)} offentligt ugyldigt onClick (Vis visning) {Intent intention = new Intent (dette, DownloadService.class) // tilføj oplysninger til den tjeneste, hvilken fil der skal downloades, og hvor skal butik intent.putExtra (DownloadService.FILENAME, 'index.html') intention.putExtra (DownloadService.URL, 'www.edureka.co') startService (intention) textView.setText ('Service startet')}}

I dette eksempel kan du se metoderne som onCreate () , onResume () , onPause () . Disse metoder udgør strukturen af ​​tjenesterne i Android.

Nu, når vi kommer til den praktiske del af denne Android Services-tutorial, skal vi sehvordan man opretter en tjeneste og håndterer den.

Demo

Lad os se, hvordan man spiller musik i baggrunden. For at gøre det skal jeg bruge Andriod Studio .

Trin 1

Opret et nyt tomt projekt. Navngiv dit projekt, og klik på Java-mappen og klik på MainActivity . Først skal du tilføje Medie afspiller så du kan importere afspilleroplysningerne som start, indstille loop og så videre.

pakke com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity public class MainActivity udvider AppCompatActivity {@ Override beskyttet ugyldigt onCreate (Bundle gemtInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.actlayer.mayer) (dette, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Bemærk: Hvis du bruger det første gang, skal du ikke glemme at aktivere BIOS. Du kan gøre dette ved at genstarte dit system.

Du bliver nødt til at tilføje en virtuel enhed. Klik bare på Åbn AVD-manager.

Vælg en enhed efter eget valg, så er du klar til at gå!

Dette kører kun, når skærmen er aktiv, men for at få denne applikation til at fungere selv i baggrunden skal du tilføje et par flere linjer kode i activity_main.xml fil.

Trin 2

Når du har kørt den tilsvarende kode, vil du kunne køre applikationen og være i stand til at afspille musikken i baggrunden, dvs. hvis nogen anden applikation åbnes, afspilles denne lyd stadig.

Lad os se, hvordan dette kan gøres.

  • Opret en anden klasse i Java-mappen, og navngiv den. Her har jeg kaldt det “ MyService '.
  • Denne klasse udvider serviceklassen.
  • Når du har serviceklassemetoderne, skal du implementere metoderne ved at klikke på alt+Enter.
  • Efter dette skal du tilsidesætte metoderne. Så højreklik på vinduet for at få indstillingerne.
  • Generer tilsidesættelsesmetoderne, vælg onStartCommand () og OnDestroy().
  • Rediger onStartCommand () metoder ved at tilføje følgende kode .:
MediaPlayer-afspiller = MediaPlayer.create (denne, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Bemærk: Slet denne kode i MainActivity.

  • Dette vil medføre en fejl, der beder dig om at fjerne erklæringen. Så fjern returerklæringen, og erklær MediaPlayer som en privat metode, og returner START_STICKY . Dette returnerer startstatus.
  • Tilføje player.stop () i onDestroy() metode.

Trin 3

Gå til bøf og gå til layout, klik på android_main.xml for at hente XML-filen til applikationen.

  • Fjern TextView, og udskift den med LinearLayout og tilføj knapper. Tilføj den tilsvarende kode.
<Lineær layout Android: orientering= 'lodret' Android: layout_bredde= 'match_parent' Android: layout_højde= 'wrap_content' Android: layout_centerVertical= 'sandt' værktøjer:ignorere= 'Manglende begrænsninger'><Knap Android: id= '@ + id / buttonStart' Android:tekst= 'Start service' Android: layout_bredde= 'wrap_content' Android: layout_højde= 'match_parent'/><Knap Android: id= '@ + id / buttonStop' Android:tekst= 'Stop service' Android: layout_bredde= 'wrap_content' Android: layout_højde= 'match_parent'/>Lineær layout>
  • Når du har gjort dette, skal du gå tilbage til MainActivity klasse og tilføj den tilsvarende kode for at linke XML-filen og MyServiceClass.
pakke com.example.newproject import androidx.appcompat.app.AppCompatActivity offentlig klasse MainActivity udvider AppCompatActivity implementerer View.OnClickListener {privat knap start, stop @Override beskyttet ugyldig onCreate (Bundle savedInstanceState) {super.onCreate (gemtInstanceState) setClay (setInlay) .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (dette) stop.setOnClickListener (dette)} @ Overstyr offentlig tomrum onClick (Se visning ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} ellers hvis (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}

Trin 4

Når du er færdig med at linke klasserne, skal vi køre koden.

Bemærk: Tilføj serviceklassenavnet i filen AndroidManifiest.xml.

Lad os derefter køre koden.

Når du starter tjenesten, kører den i baggrunden, selvom en anden applikation åbnes. Du kan starte eller stoppe tjenesten ved at klikke på knapperne.

Dette er en simpel demo, hvor du har lært, hvordan du arbejder med Android Services.

Så med dette kommer vi til slutningen af ​​denne artikel om 'Android Services Tutorial'.Jeg håber, du er klar med de emner, der er dækket af denne blog.

Nu hvor du har gennemgået vores Android Services Tutorial-blog, kan du tjekke Edurekas for at starte din læring hurtigt.

Har du spørgsmål? Glem ikke at nævne dem i kommentarerne til denne 'Android Services Tutorial' -blog. Vi vender tilbage til dig.