Vadnica za storitve Android: Kako zagnati aplikacijo v ozadju?



Ta vadnica za storitve Android vam pomaga razumeti, kako izvajati operacije v ozadju, na primer predvajanje glasbe. V njem ni nobenega uporabniškega vmesnika

Pogosto v pametnem telefonu uporabljate več aplikacij, boste morda želeli preklopiti z ene aplikacije na drugo, hkrati pa zagotoviti, da bodo vse vaše aplikacije ostale aktivne v ozadju. To niso nič drugega kot storitve, ki jih ponuja . Torej, ta članek v Vadnici za storitve Android vam bo pomagal razumeti, kako delati s storitvami.

Obravnaval bom naslednje teme:





Kaj so storitve Android?

Storitev je v bistvu proces. Android storitev je komponenta, ki deluje v ozadju, da bi lahko izvedladolgotrajne operacije brez interakcije z uporabnikom in deluje tudi, če je aplikacija uničena.Druga komponenta aplikacije lahko zažene storitev in se še naprej izvaja v ozadju, tudi če preklopite na drugo aplikacijo.

Poleg tega se komponenta lahko veže na storitev, da lahko z njo sodeluje in izvaja tudi medprocesno komunikacijo.



Opomba: Android.app.Service je podrazred razreda ContextWrapper in storitev Android ni nit ali ločen postopek.

Življenjski cikel storitev Android

Življenjski cikel storitev Android ima lahko dve obliki storitev. Življenjski cikel storitve poteka na dve različni poti, in sicer:

  1. Začeli
  2. Vezani

Začeli



Storitev se zažene, ko komponenta aplikacije pokliče startService () metoda. Ko se storitev zažene, lahko v ozadju deluje neomejeno dolgo, tudi če je komponenta, ki je odgovorna za zagon, uničena. Ustavi se z uporabo stopService () metoda. Storitev se lahko ustavi tudi s klicem na stopSelf () metoda.

Vezani

Storitev je vezana, ko se komponenta aplikacije nanjo veže s klicem bindService () . Vezana storitev ponuja vmesnik odjemalec-strežnik, ki komponentam omogoča interakcijo s storitvijo, pošiljanje zahtev in doseganje rezultatov. Obdeluje prek medprocesne komunikacije (IPC). Naročnik lahko storitev odveže s klicem unbindService () metoda.

Življenjski cikel storitve Android - Vadnica za storitve Android - Edureka

V naslednjem razdelku tega članka o storitvah Android se pogovorimo o različnihmetode v storitvenem razredu.

Vadnica za storitve Android: Metode

Obstaja nekaj metod, s katerimi lahko enostavno izvedete operacije s katero koli aplikacijo. Nekateri med njimi so:

MetodaOpis
onStartCommand ()

Ta metoda se pokliče, ko katera koli druga komponenta, na primer recimo dejavnost, zahteva zagon storitve s klicem startService () .

Vaša odgovornost je, da storitev ustavite, ko ustrezno delo opravite z uporabo stopSelf () ali stopService () metode.

odveži ()

Pokliče to metodo, ko se druga komponenta želi povezati s storitvijo s klicem bindService () .

Če želite to izvesti, morate zagotoviti vmesnik, ki ga stranke uporabljajo za komunikacijo s storitvijo. Vrne IBinder predmet. Če ne želite dovoliti vezave, se vrnite nič .

onUnbind ()

Sistem pokliče to metodo, ko so vsi odjemalci odklopljeni od določenega vmesnika, ki ga objavi storitev.

onRebind ()

Pokliče to metodo, ko so novi odjemalci povezani s storitvijo, potem ko je bila predhodno obveščena, da so vsi odklopljeni v onUnbind (Namera) .

onCreate ()

Sistem pokliče to metodo, ko je storitev prvič ustvarjena onStartCommand () ali odveži () . Izvesti je treba enkratno nastavitev.

onDestroy ()

Ta metoda se pokliče, ko se storitev ne uporablja več in je uničena. Vaša storitev bi morala to izvesti, da bi očistila vse vire, kot so niti, registrirani poslušalci, sprejemniki itd.

Koda okostja

javni razred MainActivity razširja dejavnost {private TextView textView private BroadcastReceiver receiver = new BroadcastReceiver () {@Override public void onReceive (Context context, Intent intent) {Bundle bundle = intent.getExtras () if (sveženj! = null) {String string = bundle.getString (DownloadService.FILEPATH) int resultCode = bundle.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Prenos končan. Naloži URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Prenos končan')} else {Toast.makeText (MainActivity.this, 'Prenos ni uspel', Toast.LENGTH_LONG) .show () textView.setText ('Prenos ni uspel')}}}} @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 (sprejemnik, nov IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (sprejemnik)} public void onClick (pogled pogleda) {Intent intent = new Intent (this, DownloadService.class) // dodajte informacijo za storitev, katero datoteko želite prenesti in kam shranite intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (namera) textView.setText ('Storitev je začeta')}}

V tem primeru si lahko ogledate metode, kot so onCreate () , onResume () , onPause () . Te metode tvorijo strukturo storitev v Androidu.

Zdaj, ko pridemo do praktičnega dela te vadnice za storitve Android, poglejmokako ustvariti storitev in z njo ravnati.

Predstavitev

Poglejmo, kako predvajati glasbo v ozadju. Da bi to naredil, bom uporabil Andriod Studio .

Korak 1

Ustvarite nov prazen projekt. Poimenujte svoj projekt, kliknite mapo Java in kliknite na MainActivity . Najprej dodajte Medijski predvajalnik tako da lahko uvozite podrobnosti o predvajalniku, na primer start, nastavite zanko in tako naprej.

kako uporabljati br v html -
Paket com.example.mydemoapplication uvoz androidx.appcompat.app.AppCompatActivity javnega razred MainActivity razteza AppCompatActivity {@Override zaščitena nična onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) MediaPlayer igralec = MediaPlayer.create (to, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Opomba: Če ga uporabljate prvič, ne pozabite omogočiti BIOS-a. To lahko storite s ponovnim zagonom sistema.

Dodati boste morali navidezno napravo. Samo kliknite Odprite upravitelja AVD.

Izberite želeno napravo in že ste pripravljeni!

To se bo izvajalo šele, ko je zaslon aktiven, vendar če želite, da ta aplikacija deluje tudi v ozadju, morate dodati še nekaj vrstic kode v Activity_main.xml mapa.

2. korak

Ko zaženete ustrezno kodo, boste lahko zagnali aplikacijo in lahko predvajali glasbo v ozadju, tj. Če se odpre katera koli druga aplikacija, se bo ta zvok še vedno predvajal.

Poglejmo, kako je to mogoče storiti.

  • Ustvarite drug razred v mapi Java in ga poimenujte. Tukaj sem ga že poklical MyService '.
  • Ta razred razširja razred storitve.
  • Ko dobite metode storitvenega razreda, jih implementirajte s klikom alt + Enter.
  • Po tem morate preglasiti metode. Torej, z desno miškino tipko kliknite okno, da dobite možnosti.
  • Ustvari metode preglasitve, izberite onStartCommand () , in OnDestroy ().
  • Uredite onStartCommand () metode z dodajanjem naslednje kode .:
MediaPlayer predvajalnik = MediaPlayer.create (to, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Opomba: Izbrišite to kodo v MainActivity.

  • To bo povzročilo napako z zahtevo, da odstranite izjavo. Torej odstranite izjavo return in MediaPlayer razglasite za zasebno metodo in se vrnite START_STICKY . To bo vrnilo status zagona.
  • Dodaj player.stop () v onDestroy () metoda.

3. korak

Pojdi do govedina in pojdite na postavitve, kliknite na android_main.xml da dobite datoteko XML aplikacije.

  • Odstranite TextView in ga zamenjajte z LinearLayout ter dodajte gumbe. Dodajte ustrezno kodo.
<LinearLayout android: usmerjenost= 'navpično' android: layout_width= 'match_parent' android: layout_height= 'vsebina zavijanja' android: layout_centerVertical= 'res' orodja: prezri= 'MissingConstraints'><Gumb android: id= '@ + id / buttonStart' android: besedilo= 'Začni storitev' android: layout_width= 'vsebina zavijanja' android: layout_height= 'match_parent'/><Gumb android: id= '@ + id / buttonStop' android: besedilo= 'Ustavi storitev' android: layout_width= 'vsebina zavijanja' android: layout_height= 'match_parent'/>LinearLayout>
  • Ko to storite, se vrnite na MainActivity in dodajte ustrezno kodo, da povežete datoteko XML in datoteko MyServiceClass.
paket com.example.newproject import androidx.appcompat.app.AppCompatActivity javni razred MainActivity razširja AppCompatActivity implements View.OnClickListener {private Button start, stop @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceSouti) setConvanslayOutI .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

Ko končate s povezovanjem razredov, zaženimo kodo.

Opomba: Dodajte ime razreda storitve v datoteko AndroidManifiest.xml.

Nato zaženimo kodo.

Ko zaženete storitev, se bo izvajala v ozadju, tudi če se odpre druga aplikacija. Storitev lahko zaženete ali ustavite s klikom na gumbe.

To je preprosta predstavitev, v kateri ste se naučili delati s storitvami Android.

S tem smo prišli do konca tega članka o 'Vadnici za storitve Android'.Upam, da vam ni jasno s temami, ki jih pokriva ta blog.

Zdaj, ko ste prebrali naš blog o vadnicah za Android, si lahko ogledate Edurekin za hiter začetek učenja.

Imate kakšna vprašanja? Ne pozabite jih omeniti v komentarjih tega spletnega dnevnika 'Vadnice za storitve Android'. Javili se vam bomo.