Tutorial de serveis d'Android: Com executar una aplicació en segon pla?



Aquest tutorial de serveis d'Android us ajuda a entendre com realitzar operacions en segon pla, com ara reproduir música, no té cap interfície d'usuari adjunta

Sovint utilitzant diverses aplicacions al telèfon intel·ligent, és possible que vulgueu canviar d'una aplicació a una altra, però també assegureu-vos que totes les vostres aplicacions romanen actives en segon pla. No són res més que els serveis que ofereix . Per tant, aquest article del tutorial de serveis d’Android us ajudarà a entendre com treballar amb els serveis.

Tractaré els temes següents:





Què són els serveis d'Android?

El servei és bàsicament un procés. Servei d'Android és un component que s'executa en segon pla per tal de funcionaroperacions de llarga durada sense interactuar amb l’usuari i funciona fins i tot si l’aplicació es destrueix.Un altre component d'aplicació pot iniciar un servei i es continua executant en segon pla, fins i tot si canvieu a una altra aplicació.

A més, un component pot vincular-se a un servei per interactuar amb ell i també realitzar comunicacions entre processos.



Nota: L'android.app.Service és una subclasse de la classe ContextWrapper i el servei d'Android no és un fil ni un procés separat.

Android- Serveis Cicle de vida

El cicle de vida dels serveis d'Android pot tenir dues formes de serveis. El cicle de vida d'un servei segueix dos camins diferents, a saber:

  1. Començat
  2. Enquadernat

Començat



Un servei s'inicia quan es truca un component d'aplicació startService () mètode. Un cop iniciat, un servei es pot executar en segon pla indefinidament, fins i tot si es destrueix el component responsable de l’inici. S'atura mitjançant l'ús del fitxer stopService () mètode. El servei també es pot aturar trucant al stopSelf () mètode.

Enquadernat

Un servei està vinculat quan un component de l'aplicació s'uneix a ell trucant bindService () . El servei Bound ofereix una interfície client-servidor que permet als components interactuar amb el servei, enviar sol·licituds i obtenir resultats. Es processa a través de la comunicació entre processos (IPC). El client pot desenllaçar el servei trucant al unbindService () mètode.

Cicle de vida del servei d

Passant a la següent secció d’aquest article sobre els serveis d’Android, anem a parlar dels diferentsmètodes de la classe de servei.

Tutorial de serveis d'Android: mètodes

Hi ha alguns mètodes que us permeten realitzar operacions fàcilment en qualsevol aplicació. Alguns d’ells són:

MètodeDescripció
onStartCommand ()

Aquest mètode s’anomena quan qualsevol altre component, com per exemple una activitat, sol·licita l’inici del servei trucant startService () .

És responsabilitat vostra aturar el servei quan es faci el treball corresponent mitjançant l’ús stopSelf () o bé stopService () mètodes.

desenllaçar ()

Truca a aquest mètode quan un altre component vol connectar-se amb el servei trucant bindService () .

Per implementar-ho, heu de proporcionar una interfície que fan servir els clients per comunicar-se amb el servei. Torna un IBinder objecte. Si no voleu permetre l'enquadernació, torneu-ho nul .

onUnbind ()

El sistema crida aquest mètode quan tots els clients es desconnecten d’una interfície determinada publicada pel servei.

onRebind ()

Truca a aquest mètode quan es connecten nous clients al servei després que s’hagi notificat prèviament que tots estan desconnectats onUnbind (Intenció) .

onCreate ()

El sistema crida a aquest mètode quan es crea per primera vegada el servei onStartCommand () o bé desenllaçar () . Es requereix realitzar una configuració única.

onDestroy ()

Aquest mètode s'anomena quan el servei ja no s'utilitza i s'està destruint. El vostre servei hauria d’implementar-ho per netejar recursos, com ara fils, oients registrats, receptors, etc.

Codi esquelet

classe pública MainActivity amplia Activitat {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, 'Download complete. Download URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Descàrrega feta')} else {Toast.makeText (MainActivity.this, 'Descàrrega fallida', Toast.LENGTH_LONG) .show () textView.setText ('Descàrrega fallida')}}} @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.onResume () ) registerReceiver (receptor, nou IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (View view) {Intent intent = new Intent (this, DownloadService.class) // afegiu informació per al servei quin fitxer heu de descarregar i on store intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Servei iniciat')}}

En aquest exemple, podeu veure els mètodes com ara onCreate () , onResume () , onPause () . Aquests mètodes conformen l'estructura dels serveis a Android.

Ara, per veure la part pràctica d’aquest tutorial de serveis d’Androidcom crear un servei i gestionar-lo.

Demostració

Vegem com reproduir música en segon pla. Per fer-ho, faré servir Andriod Studio .

Pas 1

Creeu un nou projecte buit. Anomeneu el vostre projecte i feu clic a la carpeta Java i feu clic a Activitat principal . En primer lloc, afegiu Reproductor multimèdia de manera que pugueu importar els detalls del reproductor com ara iniciar, configurar el bucle, etc.

package com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity class public MainActivity extends AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) (això, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Nota: si el feu servir per primera vegada, no oblideu habilitar la BIOS. Per fer-ho, reinicieu el sistema.

Haureu d’afegir un dispositiu virtual. Simplement feu clic a Obriu el gestor AVD.

Seleccioneu un dispositiu que vulgueu i ja podreu començar.

Això només s’executarà quan la pantalla estigui activa, però perquè aquesta aplicació funcioni fins i tot en segon pla, heu d’afegir algunes línies de codi més a la activity_main.xml dossier.

cicle de vida de l'activitat d'Android

Pas 2

Un cop hàgiu executat el codi corresponent, podreu executar l’aplicació i podreu reproduir la música al fons, és a dir, si s’obre alguna altra aplicació, aquest àudio encara es reproduirà.

Vegem com es pot fer això.

  • Creeu una altra classe a la carpeta Java i nomeneu-la. Aquí l’he anomenat ' El meu servei '.
  • Aquesta classe amplia la classe de servei.
  • Un cop tingueu els mètodes de classe de servei, implementeu-los fent clic alt + Retorn.
  • Després d'això, heu de substituir els mètodes. Per tant, feu clic amb el botó dret a la finestra per obtenir les opcions.
  • Genereu els mètodes de substitució i seleccioneu onStartCommand () , i OnDestroy ().
  • Editeu el fitxer onStartCommand () mètodes afegint el codi següent:
MediaPlayer player = MediaPlayer.create (això, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Nota: Suprimiu aquest codi al fitxer Activitat principal.

  • Això provocarà un error en què se us demanarà que elimineu la sentència. Per tant, elimineu la declaració de retorn i declareu MediaPlayer com a mètode privat i torneu-la START_STICKY . Això retornarà l'estat d'inici.
  • Afegeix jugador.stop () al onDestroy () mètode.

Pas 3

Anar a res i aneu a dissenys, feu clic a android_main.xml per obtenir el fitxer XML de l'aplicació.

  • Traieu TextView i substituïu-lo per LinearLayout i afegiu botons. Afegiu el codi corresponent.
<LinearLayout android: orientació= 'Vertical' android: layout_width= 'pare_parell' android: layout_height= 'wrap_content' android: layout_centerVertical= 'veritable' eines: ignorar= 'Restriccions faltants'><Botó android: identificador= '@ + id / buttonStart' android:text= 'Inicia el servei' android: layout_width= 'wrap_content' android: layout_height= 'pare_parell'/><Botó android: identificador= '@ + id / buttonStop' android:text= 'Atura el servei' android: layout_width= 'wrap_content' android: layout_height= 'pare_parell'/>LinearLayout>
  • Un cop fet això, torneu al fitxer Activitat principal class i afegiu el codi corresponent per enllaçar el fitxer XML i el fitxer MyServiceClass.
package com.example.newproject import androidx.appcompat.app.AppCompatActivity public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button start, stop @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) set .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))}}

Pas 4

Un cop hàgiu acabat d'enllaçar les classes, executem el codi.

Nota: afegiu el nom de la classe de servei al fitxer AndroidManifiest.xml.

A continuació, executem el codi.

Un cop inicieu el servei, s'executarà en segon pla fins i tot si s'obre una altra aplicació. Podeu iniciar o aturar el servei fent clic als botons.

Es tracta d’una demostració senzilla on heu après a treballar amb els serveis d’Android.

Així, amb això, arribem al final d’aquest article sobre “Tutorial de serveis d’Android”.Espero que tingueu clar els temes que es tracten en aquest bloc.

Ara que ja heu passat pel nostre bloc de tutoria de serveis d'Android, podeu consultar Edureka per iniciar ràpidament el vostre aprenentatge.

Té alguna consulta? No us oblideu d'esmentar-los als comentaris d'aquest bloc 'Tutorial de serveis d'Android'. Ens posarem en contacte amb vosaltres.