Android Services Tutorial: Hvordan kjører jeg et program i bakgrunnen?



Denne opplæringen for Android-tjenester hjelper deg med å forstå hvordan du utfører operasjoner i bakgrunnen, for eksempel å spille musikk. Den har ikke noe brukergrensesnitt

Ofte ved å bruke flere applikasjoner på smarttelefonen din, vil du kanskje bytte fra en applikasjon til en annen, men også sørge for at alle applikasjonene dine forblir aktive i bakgrunnen. Dette er ingenting annet enn tjenestene som tilbys av . Så denne artikkelen på Android Services Tutorial vil hjelpe deg å forstå hvordan du kan jobbe med tjenestene.

Jeg skal dekke følgende emner:





Hva er Android Services?

Service er i utgangspunktet en prosess. Android-tjeneste er en komponent som går i bakgrunnen for å kunne utførelangvarige operasjoner uten å kommunisere med brukeren, og det fungerer selv om applikasjonen blir ødelagt.En annen applikasjonskomponent kan starte en tjeneste, og den fortsetter å kjøre i bakgrunnen selv om du bytter til et annet program.

I tillegg kan en komponent binde seg til en tjeneste for å samhandle med den og også utføre kommunikasjon mellom prosesser.



Merk: Android.app.Service er en underklasse av ContextWrapper-klassen, og Android-tjenesten er ikke en tråd eller en egen prosess.

Android- Services livssyklus

Android Services livssyklus kan ha to former for tjenester. Livssyklusen til en tjeneste følger to forskjellige veier, nemlig:

  1. Startet
  2. Bundet

Startet



En tjeneste startes når en applikasjonskomponent ringer startService () metode. Når tjenesten er startet, kan den kjøre på ubestemt tid i bakgrunnen, selv om komponenten som er ansvarlig for starten blir ødelagt. Det stoppes ved å bruke stopService () metode. Tjenesten kan også stoppe seg selv ved å ringe stopSelf () metode.

Bundet

En tjeneste er bundet når en applikasjonskomponent binder seg til den ved å ringe bindService () . Bound-tjenesten tilbyr et klient-server-grensesnitt som lar komponenter samhandle med tjenesten, sende forespørsler og få resultater. Den prosesser på tvers av prosesskommunikasjon (IPC). Klienten kan koble opp tjenesten ved å ringe unbindService () metode.

Livssyklus for Android-tjenester - Veiledning for Android-tjenester - Edureka

Fortsett til neste del av denne artikkelen om Android Services, la oss diskutere de forskjelligemetoder under serviceklassen.

Opplæring i Android-tjenester: Metoder

Det er noen få metoder som du enkelt kan utføre operasjoner på alle applikasjoner. Noen av dem er:

MetodeBeskrivelse
onStartCommand ()

Denne metoden kalles når en hvilken som helst annen komponent, for eksempel en aktivitet, ber om at tjenesten startes, ved å ringe startService () .

Det er ditt ansvar å stoppe tjenesten når det tilsvarende arbeidet gjøres ved å bruke stopSelf () eller stopService () metoder.

løsne ()

Kaller denne metoden når en annen komponent ønsker å binde seg til tjenesten ved å ringe bindService () .

For å implementere dette, må du gi et grensesnitt som klienter bruker for å kommunisere med tjenesten. Det returnerer en IBinder gjenstand. Hvis du ikke vil tillate binding, så returner null .

onUnbind ()

Systemet kaller denne metoden når alle klienter er koblet fra et bestemt grensesnitt publisert av tjenesten.

onRebind ()

Kaller denne metoden når nye klienter er koblet til tjenesten etter at det tidligere var blitt varslet om at alle er koblet fra onUnbind (Intent) .

aktive og passive transformasjoner i informatica
onCreate ()

Systemet kaller denne metoden når tjenesten opprettes første gang onStartCommand () eller løsne () . Det er nødvendig å utføre en engangsoppsett.

onDestroy ()

Denne metoden kalles når tjenesten ikke lenger brukes og blir ødelagt. Tjenesten din bør implementere dette for å rydde opp i ressurser som tråder, registrerte lyttere, mottakere osv.

Skjelettkode

offentlig klasse MainActivity utvider aktivitet {privat TextView textView private BroadcastReceiver mottaker = ny BroadcastReceiver () {@Override public void onReceive (Context context, Intent intention) {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 ('Last ned gjort')} annet {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-beskyttet ugyldig onResume () {super.onRes ) registerReceiver (mottaker, ny IntentFilter (DownloadService.NOTIFICATION))} @Override beskyttet tomrom onPause () {super.onPause () unregisterReceiver (mottaker)} offentlig tomrom onClick (View view) {Intent intention = new Intent (this, DownloadService.class) // legg til informasjon for tjenesten hvilken fil du skal laste ned og hvor du skal butikk intent.putExtra (DownloadService.FILENAME, 'index.html') intention.putExtra (DownloadService.URL, 'www.edureka.co') startService (intention) textView.setText ('Tjenesten startet')}}

I dette eksemplet kan du se metodene som onCreate () , onResume () , onPause () . Disse metodene utgjør strukturen til tjenestene i Android.

Nå når vi kommer til den praktiske delen av denne veiledningen for Android-tjenester, la oss sehvordan du oppretter en tjeneste og håndterer den.

Demo

La oss se hvordan du spiller musikk i bakgrunnen. For å gjøre det, bruker jeg Andriod Studio .

Trinn 1

Lag et nytt tomt prosjekt. Gi prosjektet et navn, og klikk på Java-mappen og klikk på Hoved aktivitet . Først, legg til Mediaspiller slik at du kan importere spilleropplysningene som start, sette løkken og så videre.

pakke com.example.mydemoapplication importere androidx.appcompat.app.AppCompatActivity offentlig klasse MainActivity utvider AppCompatActivity {@Override beskyttet ugyldig onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.actlayer_mayer_player) (dette, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Merk: Hvis du bruker den for første gang, ikke glem å aktivere BIOS. Du kan gjøre dette ved å starte systemet på nytt.

Du må legge til en virtuell enhet. Bare klikk på Open AVD manager.

Velg en enhet du ønsker, så er du klar!

Dette vil bare kjøre når skjermen er aktiv, men for å få dette programmet til å fungere selv i bakgrunnen, må du legge til noen flere linjer med kode i activity_main.xml fil.

Steg 2

Når du har kjørt den tilsvarende koden, vil du kunne kjøre applikasjonen og kunne spille musikken i bakgrunnen, dvs. hvis noen andre applikasjoner åpnes, vil denne lyden fortsatt spilles av.

La oss se hvordan dette kan gjøres.

  • Opprett en annen klasse i Java-mappen og gi den navnet. Her har jeg kalt det “ MyService '.
  • Denne klassen utvider serviceklassen.
  • Når du har tjenesteklassemetodene, implementerer du metodene ved å klikke alt + Enter.
  • Etter dette må du overstyre metodene. Så høyreklikk på vinduet for å få alternativene.
  • Generer overstyringsmetodene, velg onStartCommand () , og OnDestroy ().
  • Rediger onStartCommand () metoder ved å legge til følgende kode .:
MediaPlayer-spiller = MediaPlayer.create (dette, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Merk: Slett denne koden i Hoved aktivitet.

  • Dette vil føre til en feil som ber deg om å fjerne utsagnet. Så fjern returerklæringen og erklær MediaPlayer som en privat metode og returner START_STICKY . Dette vil returnere startstatusen.
  • Legge til player.stop () i onDestroy () metode.

Trinn 3

Gå til storfekjøtt og gå til oppsett, klikk på android_main.xml for å få XML-filen til applikasjonen.

  • Fjern TextView, og erstatt den med LinearLayout og legg til knapper. Legg til den tilsvarende koden.
<Lineær oppsett Android: orientering= 'vertikal' Android: layout_width= 'match_parent' Android: layout_height= 'wrap_content' Android: layout_centerVertical= 'sant' verktøy:overse= 'MissingConstraints'><Knapp Android: id= '@ + id / buttonStart' Android:tekst= 'Start tjeneste' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/><Knapp Android: id= '@ + id / buttonStop' Android:tekst= 'Stopp tjeneste' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/>Lineær oppsett>
  • Når du har gjort dette, går du tilbake til Hoved aktivitet klasse og legg til den tilsvarende koden for å koble XML-filen og MyServiceClass.
pakke com.example.newproject importere androidx.appcompat.app.AppCompatActivity offentlig klasse MainActivity utvider AppCompatActivity implementerer View.OnClickListener {privat knapp start, stopp @ Override beskyttet tomrom onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setClay .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (dette) stop.setOnClickListener (dette)} @ Overstyr offentlig tomrom onClick (Vis visning ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Trinn 4

Når du er ferdig med å knytte klassene, la oss kjøre koden.

Merk: Legg til tjenesteklassenavnet i AndroidManifiest.xml-filen.

La oss kjøre koden.

Når du starter tjenesten, vil den kjøre i bakgrunnen selv om et annet program åpnes. Du kan starte eller stoppe tjenesten ved å klikke på knappene.

Dette er en enkel demo hvor du har lært hvordan du jobber med Android Services.

Så med dette kommer vi til slutten av denne artikkelen om 'Android Services Tutorial'.Jeg håper du er klar med temaene som er omtalt i denne bloggen.

Nå som du har gått gjennom vår Android Services Tutorial-blogg, kan du sjekke ut Edureka’s for å starte læringen raskt.

Har du spørsmål? Ikke glem å nevne dem i kommentarene til denne 'Android Services Tutorial' -bloggen. Vi kommer tilbake til deg.