Android-palveluiden opetusohjelma: Kuinka ajaa sovellus taustalla?



Tämä Android-palvelujen opetusohjelma auttaa sinua ymmärtämään, miten taustalla tehtävät toiminnot, kuten musiikin toistaminen, ei ole liitetty käyttöliittymään

Usein älypuhelimesi useita sovelluksia käytettäessä kannattaa ehkä vaihtaa sovelluksesta toiseen, mutta myös varmistaa, että kaikki sovelluksesi pysyvät aktiivisina taustalla. Nämä eivät ole muuta kuin tarjoamia palveluja . Joten tämä Android-palveluiden opetusohjelma -artikkeli auttaa sinua ymmärtämään, miten palveluja käytetään.

Käsittelen seuraavia aiheita:





Mitä ovat Android-palvelut?

Palvelu on periaatteessa prosessi. Android-palvelu on komponentti, joka toimii taustalla suorittaakseenpitkäkestoiset toiminnot ilman vuorovaikutusta käyttäjän kanssa ja se toimii, vaikka sovellus tuhoutuisi.Toinen sovelluskomponentti voi käynnistää palvelun, ja se toimii edelleen taustalla, vaikka vaihdat toiseen sovellukseen.

Lisäksi komponentti voi sitoutua palveluun voidakseen olla vuorovaikutuksessa sen kanssa ja myös suorittaa prosessien välistä viestintää.



Huomautus: Android.app.Service on ContextWrapper-luokan alaluokka, ja Android-palvelu ei ole ketju tai erillinen prosessi.

Android- Palvelujen elinkaari

Android-palveluiden elinkaarella voi olla kahta palvelumuotoa. Palvelun elinkaari seuraa kahta eri polkua, nimittäin:

  1. Aloitettu
  2. Sidottu

Aloitettu



Palvelu käynnistetään, kun sovelluskomponentti soittaa startService () menetelmä. Käynnistyksen jälkeen palvelu voi toimia taustalla loputtomasti, vaikka käynnistyksestä vastaava komponentti tuhoutuisi. Se pysäytetään käyttämällä stopService () menetelmä. Palvelu voi myös pysäyttää itsensä soittamalla stopSelf () menetelmä.

Sidottu

Palvelu on sidottu, kun sovelluskomponentti sitoutuu siihen soittamalla bindService () . Bound-palvelu tarjoaa asiakas-palvelin-käyttöliittymän, jonka avulla komponentit voivat olla vuorovaikutuksessa palvelun kanssa, lähettää pyyntöjä ja saada tuloksia. Se käsittelee prosessien välistä viestintää (IPC). Asiakas voi purkaa palvelun soittamalla unindService () menetelmä.

Android-palvelun elinkaari- Android-palveluiden opetusohjelma - Edureka

Siirtymällä tämän artikkelin seuraavaan osioon Android-palveluissa, keskustellaan niistäpalveluluokan menetelmät.

Android-palveluiden opetusohjelma: Menetelmät

On olemassa muutamia tapoja, joilla voit helposti suorittaa toimintoja missä tahansa sovelluksessa. Jotkut niistä ovat:

MenetelmäKuvaus
onStartCommand ()

Tätä menetelmää kutsutaan, kun mikä tahansa muu komponentti, kuten esimerkiksi toiminta, pyytää palvelun käynnistämistä soittamalla startService () .

Sinun vastuullasi on lopettaa palvelu, kun vastaava työ on tehty käyttämällä stopSelf () tai stopService () menetelmiä.

irrottaa ()

Kutsuu tätä menetelmää, kun toinen komponentti haluaa sitoutua palveluun soittamalla bindService () .

Tämän toteuttamiseksi sinun on annettava käyttöliittymä, jota asiakkaat käyttävät voidakseen kommunikoida palvelun kanssa. Se palauttaa arvon IBinder esine. Jos et halua sallia sitomista, palaa takaisin tyhjä .

onUnbind ()

Järjestelmä kutsuu tätä menetelmää, kun kaikki asiakkaat ovat irti tietystä palvelun julkaisemasta käyttöliittymästä.

onRebind ()

Kutsuu tätä menetelmää, kun palveluun on yhdistetty uusia asiakkaita sen jälkeen, kun siitä on aiemmin ilmoitettu, että kaikki on katkaistu onUnbind (Tarkoitus) .

onCreate ()

Järjestelmä kutsuu tätä menetelmää, kun palvelu luodaan ensimmäisen kerran onStartCommand () tai irrottaa () . Se on suoritettava kertaluonteinen asennus.

onDestroy ()

Tätä menetelmää kutsutaan, kun palvelua ei enää käytetä ja se tuhoutuu. Palvelun tulisi toteuttaa tämä puhdistaakseen kaikki resurssit, kuten ketjut, rekisteröidyt kuuntelijat, vastaanottimet jne.

Luurankokoodi

public class MainActivity laajentaa toimintoa {private TextView textView private BroadcastReceiver vastaanotin = new BroadcastReceiver () {@Override public void onReceive (Context context, Intent intent) {Bundle bundle = intent.getExtras () if (bundle! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Lataa valmis. Lataa URI:' + merkkijono, Toast.LENGTH_LONG) .show () textView.setText ('Lataus valmis')} else {Toast.makeText (MainActivity.this, 'Lataus epäonnistui, Toast.LENGTH_LONG) .show () textView.setText (' Lataus epäonnistui)}}}} @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protected void onResume () {super.on ) registerReceiver (vastaanotin, uusi IntentFilter (DownloadService.NOTIFICATION))} @Override suojattu void onPause () {super.onPause () unregisterReceiver (vastaanotin)} public void onClick (Näytä näkymä) {Intent intent = new Intent (this, DownloadService.class) // lisää palvelun tiedot mihin tiedostoon ladataan ja minne tallentaa intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Palvelu aloitettu')}}

Tässä esimerkissä näet menetelmät, kuten onCreate () , onResume () , onPause () . Nämä menetelmät muodostavat Palvelujen rakenteen Androidissa.

Katsotaanpa nyt tämän Android-palveluiden opetusohjelman käytännön osaankuinka luoda palvelu ja käsitellä sitä.

Demo

Katsotaanpa, miten musiikkia soitetaan taustalla. Tätä varten käytän Andriod-studio .

Vaihe 1

Luo uusi tyhjä projekti. Nimeä projekti, napsauta Java-kansiota ja napsauta Pääaktiviteetti . Lisää ensin Mediasoitin jotta voit tuoda soittimen yksityiskohdat, kuten käynnistyksen, asettaa silmukan ja niin edelleen.

paketti com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity julkinen luokka MainActivity laajentaa AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layoutPlayer.player) (tämä, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Huomaa: Jos käytät sitä ensimmäistä kertaa, muista unohtaa ottaa BIOS käyttöön. Voit tehdä tämän käynnistämällä järjestelmän uudelleen.

Sinun on lisättävä virtuaalinen laite. Napsauta vain Avaa AVD-hallinta.

mikä on kontekstisuodatin taulussa

Valitse haluamasi laite ja olet valmis menemään!

Tämä toimii vain, kun näyttö on aktiivinen, mutta jotta tämä sovellus toimisi jopa taustalla, sinun on lisättävä vielä muutama koodi riviä activity_main.xml tiedosto.

Vaihe 2

Kun olet suorittanut vastaavan koodin, voit käyttää sovellusta ja pystyä toistamaan musiikkia taustalla, ts. Jos jokin muu sovellus avataan, tämä ääni toistetaan edelleen.

Katsotaanpa, miten tämä voidaan tehdä.

  • Luo toinen luokka Java-kansioon ja nimeä se. Tässä olen kutsunut sitä Oma palvelu '.
  • Tämä luokka laajentaa Service-luokkaa.
  • Kun sinulla on Palveluluokan menetelmät, ota menetelmät käyttöön napsauttamalla alt + Enter.
  • Tämän jälkeen sinun on ohitettava menetelmät. Joten napsauta hiiren kakkospainikkeella ikkunaa saadaksesi vaihtoehdot.
  • Luo ohitustavat, valitse onStartCommand () ja OnDestroy ().
  • Muokkaa onStartCommand () menetelmiä lisäämällä seuraava koodi:
MediaPlayer player = MediaPlayer.create (tämä, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Huomautus: Poista tämä koodi Pääaktiviteetti.

  • Tämä heittää virheen, jossa sinua pyydetään poistamaan lause. Poista siis palautuslauseke ja julista MediaPlayer yksityiseksi menetelmäksi ja palauta START_STICKY . Tämä palauttaa alkutilan.
  • Lisätä player.stop () että onDestroy () menetelmä.

Vaihe 3

Mene naudanliha ja siirry asetteluihin, napsauta android_main.xml saadaksesi sovelluksen XML-tiedoston.

  • Poista TextView ja korvaa se LinearLayout ja lisää painikkeilla. Lisää vastaava koodi.
<Lineaarinen asettelu android:suuntautuminen= 'pystysuora' android: layout_width= 'match_parent' android: layout_height= 'wrap_content' android: layout_centerVertical= 'totta' työkalut:jättää huomiotta= 'MissingConstraints'><Button android: id= '@ + id / buttonStart' android:teksti= 'Käynnistä palvelu' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/><Button android: id= '@ + id / buttonStop' android:teksti= 'Lopeta palvelu' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/>Lineaarinen asettelu>
  • Kun olet tehnyt tämän, palaa takaisin Pääaktiviteetti luokka ja lisää vastaava koodi linkittääksesi XML-tiedoston ja MyServiceClass.
paketti com.example.newproject import androidx.appcompat.app.AppCompatActivity julkinen luokka MainActivity laajentaa AppCompatActivity toteuttaa View.OnClickListener {private Button start, stop @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) (savedInstanceState) .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (Näytä näkymä) ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Vaihe 4

Kun olet linkittänyt kurssit, suoritetaan koodi.

Huomaa: Lisää Palveluluokan nimi AndroidManifiest.xml-tiedostoon.

Suoritetaan seuraavaksi koodi.

Kun käynnistät palvelun, se toimii taustalla, vaikka toinen sovellus avattaisiin. Voit käynnistää tai lopettaa palvelun napsauttamalla painikkeita.

Tämä on yksinkertainen esittely, jossa olet oppinut työskentelemään Android-palveluiden kanssa.

Joten tämän kanssa olemme päässeet tämän artikkelin 'Android Services Tutorial' loppuun.Toivon, että ymmärrät tämän blogin aiheet.

Nyt kun olet käynyt läpi Android Services Tutorial -blogimme, voit tarkistaa Edurekan aloittaa oppimisen nopeasti.

Onko sinulla kysyttävää? Älä unohda mainita niitä tämän Android Services Tutorial -blogin kommenteissa. Palaamme sinuun.