Vodič za Android usluge: Kako pokrenuti aplikaciju u pozadini?



Ovaj vodič za Android usluge pomaže vam da razumijete kako izvoditi radnje u pozadini, poput reprodukcije glazbe, nema priloženog korisničkog sučelja

Često upotrebljavajući više aplikacija na pametnom telefonu, možda ćete se htjeti prebaciti s jednog na drugi, ali i osigurati da sve vaše aplikacije ostanu aktivne u pozadini. To nisu ništa drugo do usluge koje nudi . Dakle, ovaj članak u vodiču za Android usluge pomoći će vam da razumijete kako raditi s uslugama.

Obradit ću sljedeće teme:





Što su Android usluge?

Usluga je u osnovi proces. Android usluga je komponenta koja se izvodi u pozadini radi izvođenjadugotrajne operacije bez interakcije s korisnikom i djeluje čak i ako je aplikacija uništena.Druga komponenta aplikacije može pokrenuti uslugu i ona se nastavlja raditi u pozadini čak i ako se prebacite na drugu aplikaciju.

Uz to, komponenta se može vezati za uslugu kako bi s njom stupila u interakciju i također izvršila međuprocesnu komunikaciju.



Bilješka: Android.app.Service podrazred je klase ContextWrapper, a usluga Android nije nit ili zaseban postupak.

Životni ciklus usluga Android

Životni ciklus usluga Android može imati dva oblika usluga. Životni ciklus usluge slijedi dva različita puta, i to:

  1. Započeo
  2. Vezani

Započeo



Usluga se pokreće kad komponenta aplikacije pozove startService () metoda. Jednom pokrenut, usluga može raditi u pozadini neograničeno, čak i ako je komponenta koja je odgovorna za pokretanje uništena. Zaustavlja se pomoću stopService () metoda. Usluga se također može zaustaviti pozivom na stopSelf () metoda.

Vezani

Usluga je obvezna kada se komponenta aplikacije na nju veže pozivom bindService () . Vezana usluga nudi sučelje klijent-poslužitelj koje komponentama omogućuje interakciju sa uslugom, slanje zahtjeva i dobivanje rezultata. Obrađuje kroz međuprocesnu komunikaciju (IPC). Klijent može odvezati uslugu pozivom na unbindService () metoda.

Životni ciklus Android usluga - Vodič za Android usluge - Edureka

Prijelazeći na sljedeći odjeljak ovog članka o Android uslugama, razgovarajmo o različitimmetode pod uslužnom klasom.

Vodič za Android usluge: Metode

Postoji nekoliko metoda pomoću kojih možete lako izvršiti operacije na bilo kojoj aplikaciji. Neki od njih su:

MetodaOpis
onStartCommand ()

Ova se metoda poziva kada bilo koja druga komponenta, poput recimo neke aktivnosti, zahtijeva pokretanje usluge pozivom startService () .

Vaša je odgovornost zaustaviti uslugu kada se odgovarajući posao obavi pomoću stopSelf () ili stopService () metode.

odvezati ()

Poziva ovu metodu kada se druga komponenta želi povezati s uslugom pozivanjem bindService () .

Da biste to primijenili, morate osigurati sučelje koje klijenti koriste kako bi komunicirali sa uslugom. Vraća IBinder objekt. Ako ne želite dopustiti vezanje, vratite se nula .

onUnbind ()

Sustav poziva ovu metodu kada su svi klijenti isključeni s određenog sučelja koje je usluga objavila.

onRebind ()

Poziva ovu metodu kada su novi klijenti povezani s uslugom nakon što je prethodno obaviješten da su svi isključeni u onUbbind (Namjera) .

onCreate ()

Sustav poziva ovu metodu kada se usluga prvi put kreira onStartCommand () ili odvezati () . Potrebno je izvršiti jednokratno postavljanje.

onDestroy ()

Ova se metoda poziva kada se usluga više ne koristi i uništava se. Vaša bi usluga to trebala implementirati kako bi očistila sve resurse poput niti, registriranih slušatelja, prijamnika itd.

Kod skeleta

javna klasa MainActivity proširuje aktivnost {private TextView textView private BroadcastReceiver receiver = 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, 'Preuzimanje završeno. Preuzmi URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Preuzimanje završeno')} else {Toast.makeText (MainActivity.this, 'Preuzimanje nije uspjelo', Toast.LENGTH_LONG) .show () textView.setText ('Preuzimanje nije uspjelo')}}}}} @Override javna praznina onCreate (Bundle savedInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protected void onResume () {super.on. ) registerReceiver (prijamnik, novi IntentFilter (DownloadService.NOTIFICATION))} @Override zaštićena praznina onPause () {super.onPause () unregisterReceiver (prijemnik)} javna praznina onClick (prikaz pogleda) {Namjera namjere = nova namjera (this, DownloadService.class) // dodajte informaciju za uslugu koju datoteku treba preuzeti i kamo pohraniti intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (namjera) textView.setText ('Usluga započeta')}}

U ovom primjeru možete vidjeti metode poput onCreate () , onResume () , onPause () . Te metode čine strukturu Usluga u Androidu.

java razlika između bacanja i bacanja

A sada, prijeđimo na praktični dio ovog vodiča za Android usluge, da vidimokako stvoriti uslugu i rukovati njom.

Demo

Pogledajmo kako puštati glazbu u pozadini. Da bih to učinio, koristit ću Andriod Studio .

Korak 1

Stvorite novi prazan projekt. Nazovite svoj projekt i kliknite na mapu Java i kliknite na Glavna aktivnost . Prvo dodajte MediaPlayer tako da možete uvesti detalje o igraču poput starta, postaviti petlju i tako dalje.

Paket com.example.mydemoapplication uvoz androidx.appcompat.app.AppCompatActivity javne klase MainActivity proteže AppCompatActivity {@Override zaštićena void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) MediaPlayer igrač = MediaPlayer.create (ovo, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Napomena: Ako ga upotrebljavate prvi put, ne zaboravite omogućiti BIOS. To možete učiniti ponovnim pokretanjem sustava.

Morat ćete dodati virtualni uređaj. Samo kliknite na Otvorite AVD manager.

Odaberite uređaj po svom izboru i spremni ste za rad!

To će se izvoditi samo kada je zaslon aktivan, ali da bi ova aplikacija radila čak i u pozadini, morate dodati još nekoliko redaka koda u Activity_main.xml datoteka.

Korak 2

Jednom kada pokrenete odgovarajući kôd, moći ćete pokrenuti aplikaciju i moći ćete reproducirati glazbu u pozadini, tj. Ako se otvori bilo koja druga aplikacija, ovaj će se zvuk i dalje reproducirati.

Pogledajmo kako se to može učiniti.

  • Izradite drugu klasu u mapi Java i dodijelite joj naziv. Evo, nazvao sam to ' MyService '.
  • Ova klasa proširuje klasu Usluga.
  • Nakon što steknete metode klase usluge, implementirajte ih klikom alt + Enter.
  • Nakon toga morate nadjačati metode. Dakle, desnom tipkom miša kliknite prozor da biste dobili opcije.
  • Generirajte metode nadjačavanja, odaberite onStartCommand () , i OnDestroy ().
  • Uredite onStartCommand () metode dodavanjem sljedećeg koda .:
MediaPlayer player = MediaPlayer.create (ovo, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Bilješka: Izbrišite ovaj kod u Glavna aktivnost.

  • To će dovesti do pogreške koja traži da uklonite izjavu. Dakle, uklonite povratnu izjavu i proglasite MediaPlayer privatnom metodom i vratite se START_STICKY . Ovo će vratiti status pokretanja.
  • Dodati player.stop () u onDestroy () metoda.

3. korak

Ići govedina i idite na izglede, kliknite na android_main.xml da biste dobili XML datoteku aplikacije.

  • Uklonite TextView i zamijenite ga LinearLayout te dodajte gumbe. Dodajte odgovarajući kod.
<LinearLayout android:orijentacija= 'okomito' android: layout_width= 'match_parent' android: layout_height= 'sadržaj omota' android: layout_centerVertical= 'istina' alata:zanemariti= 'Nedostaju ograničenja'><Dugme android:iskaznica= '@ + id / buttonStart' android:tekst= 'Pokreni uslugu' android: layout_width= 'sadržaj omota' android: layout_height= 'match_parent'/><Dugme android:iskaznica= '@ + id / buttonStop' android:tekst= 'Zaustavi uslugu' android: layout_width= 'sadržaj omota' android: layout_height= 'match_parent'/>LinearLayout>
  • Nakon što to učinite, vratite se na Glavna aktivnost klase i dodajte odgovarajući kôd kako biste povezali XML datoteku i MyServiceClass.
paket com.example.newproject import androidx.appcompat.app.AppCompatActivity javna klasa MainActivity proširuje AppCompatActivity implementira View.OnClickListener {private Button start, stop @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceStatei) setConvanslayoutStateI .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (View view ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

4. korak

Kad završite s povezivanjem klasa, pokrenimo kod.

Napomena: Dodajte naziv klase usluge u datoteku AndroidManifiest.xml.

Dalje, pokrenimo kod.

Jednom kada pokrenete uslugu, ona će se pokretati u pozadini, čak i ako se otvori druga aplikacija. Uslugu možete pokrenuti ili zaustaviti klikom na gumbe.

Ovo je jednostavna demonstracija u kojoj ste naučili raditi s Android uslugama.

Dakle, ovim smo došli do kraja ovog članka o 'Vodiču za Android usluge'.Nadam se da su vam jasne teme koje su obrađene na ovom blogu.

Sad kad ste prošli naš blog Vodič za Android usluge, možete provjeriti Edurekin za brzo započinjanje učenja.

Imate li pitanja? Ne zaboravite ih spomenuti u komentarima ovog bloga 'Vodič za Android usluge'. Javit ćemo vam se.