Tutorial sui servizi Android: come eseguire un'applicazione in background?



Questo tutorial sui servizi Android ti aiuta a capire come eseguire operazioni in background come la riproduzione di musica, non ha alcuna interfaccia utente allegata

Utilizzando spesso più applicazioni sul tuo smartphone, potresti voler passare da un'applicazione all'altra ma assicurarti anche che tutte le tue applicazioni rimangano attive in background. Questi non sono altro che i servizi offerti da . Quindi, questo articolo sul tutorial sui servizi Android ti aiuterà a capire come lavorare con i servizi.

Tratterò i seguenti argomenti:





Cosa sono i servizi Android?

Il servizio è fondamentalmente un processo. Servizio Android è un componente che viene eseguito in background per eseguireoperazioni di lunga durata senza interagire con l'utente e funziona anche se l'applicazione viene distrutta.Un altro componente dell'applicazione può avviare un servizio e continua a essere eseguito in background anche se si passa a un'altra applicazione.

Inoltre, un componente può legarsi a un servizio per interagire con esso ed eseguire anche comunicazioni tra processi.



Nota: Android.app.Service è una sottoclasse della classe ContextWrapper e il servizio Android non è un thread o un processo separato.

Ciclo di vita dei servizi Android

Il ciclo di vita dei servizi Android può avere due forme di servizi. Il ciclo di vita di un servizio segue due percorsi diversi, ovvero:

  1. Iniziato
  2. Limite

Iniziato



Un servizio viene avviato quando viene chiamato un componente dell'applicazione startService () metodo. Una volta avviato, un servizio può essere eseguito in background indefinitamente, anche se il componente responsabile dell'avvio viene distrutto. Viene interrotto utilizzando il stopService () metodo. Il servizio può anche interrompersi chiamando il stopSelf () metodo.

Limite

Un servizio viene associato quando un componente dell'applicazione si collega ad esso chiamando bindService () . Il servizio associato offre un'interfaccia client-server che consente ai componenti di interagire con il servizio, inviare richieste e ottenere risultati. Elabora la comunicazione tra processi (IPC). Il client può svincolare il servizio chiamando il unbindService () metodo.

come eseguire il test del database

Ciclo di vita del servizio Android - Tutorial sui servizi Android - Edureka

Passando alla sezione successiva di questo articolo sui servizi Android, parliamo delle diversemetodi nella classe di servizio.

Tutorial sui servizi Android: metodi

Esistono alcuni metodi che consentono di eseguire facilmente operazioni su qualsiasi applicazione. Alcuni di loro sono:

MetodoDescrizione
onStartCommand ()

Questo metodo viene chiamato quando qualsiasi altro componente, come ad esempio un'attività, richiede l'avvio del servizio, chiamando startService () .

È tua responsabilità interrompere il servizio quando il lavoro corrispondente viene eseguito utilizzando stopSelf () o stopService () metodi.

sciogliere ()

Chiama questo metodo quando un altro componente desidera collegarsi al servizio chiamando bindService () .

Per implementare ciò, è necessario fornire un'interfaccia che i client utilizzino per comunicare con il servizio. Restituisce un file IBinder oggetto. Se non desideri consentire l'associazione, torna nullo .

onUnbind ()

Il sistema chiama questo metodo quando tutti i client sono disconnessi da una particolare interfaccia pubblicata dal servizio.

onRebind ()

Chiama questo metodo quando nuovi client sono connessi al servizio dopo che è stato precedentemente notificato che tutti sono disconnessi onUnbind (Intent) .

onCreate ()

Il sistema chiama questo metodo quando il servizio viene creato per la prima volta utilizzando onStartCommand () o sciogliere () . È necessario eseguire una configurazione una tantum.

onDestroy ()

Questo metodo viene chiamato quando il servizio non è più utilizzato e viene distrutto. Il tuo servizio dovrebbe implementarlo al fine di ripulire eventuali risorse come thread, listener registrati, ricevitori, ecc.

Codice scheletro

public class MainActivity estende Activity {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 ('Download done')} else {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 protected void onResume () {super.onResume ( ) registerReceiver (receiver, new IntentFilter (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (View view) {Intent intent = new Intent (this, DownloadService.class) // aggiungi informazioni per il servizio quale file scaricare e dove store intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Service started')}}

In questo esempio, puoi vedere i metodi come onCreate () , onResume () , onPause () . Questi metodi costituiscono la struttura dei Servizi in Android.

Ora, arrivando alla parte pratica di questo tutorial sui servizi Android, vediamocome creare un servizio e gestirlo.

Demo

Vediamo come riprodurre musica in sottofondo. Per farlo, userò Andriod Studio .

Passo 1

Crea un nuovo progetto vuoto. Assegna un nome al progetto e fai clic sulla cartella Java, quindi fai clic su Attività principale . Per prima cosa, aggiungi Media Player in modo da poter importare i dettagli del giocatore come start, impostare il loop e così via.

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

Nota: se lo utilizzi per la prima volta, non dimenticare di abilitare il BIOS. Puoi farlo riavviando il sistema.

Dovrai aggiungere un dispositivo virtuale. Basta fare clic su Apri AVD manager.

Seleziona un dispositivo di tua scelta e sei pronto per partire!

Funzionerà solo quando lo schermo è attivo ma per far funzionare questa applicazione anche in background, è necessario aggiungere qualche altra riga di codice nel activity_main.xml file.

Passo 2

Una volta eseguito il codice corrispondente, sarai in grado di eseguire l'applicazione e sarai in grado di riprodurre la musica in sottofondo, cioè, se viene aperta un'altra applicazione, questo audio continuerà a essere riprodotto.

Vediamo come si può fare.

  • Crea un'altra classe nella cartella Java e assegnagli un nome. Ecco, l'ho chiamato ' MyService '.
  • Questa classe estende la classe Service.
  • Dopo aver ottenuto i metodi della classe Service, implementare i metodi facendo clic su alt + Invio.
  • Dopo questo, devi sovrascrivere i metodi. Quindi, fai clic con il tasto destro sulla finestra per ottenere le opzioni.
  • Genera i metodi di sostituzione, seleziona onStartCommand () , e OnDestroy ().
  • Modifica il file onStartCommand () metodi aggiungendo il codice seguente .:
MediaPlayer player = MediaPlayer.create (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Nota: Elimina questo codice nel file Attività principale.

  • Questo genererà un errore che ti chiede di rimuovere l'istruzione. Quindi, rimuovere l'istruzione return e dichiarare MediaPlayer come metodo privato e restituire START_STICKY . Ciò restituirà lo stato di avvio.
  • Inserisci player.stop () nel onDestroy () metodo.

Passaggio 3

Vai a Manzo e vai ai layout, fai clic su android_main.xml per ottenere il file XML dell'applicazione.

  • Rimuovere TextView e sostituirlo con LinearLayout e aggiungere i pulsanti. Aggiungi il codice corrispondente.
<LinearLayout Android:orientamento= 'verticale' Android: layout_width= 'match_parent' Android: layout_height= 'wrap_content' Android: layout_centerVertical= 'vero' utensili:ignorare= 'MissingConstraints'><Pulsante Android: id= '@ + id / buttonStart' Android:testo= 'Avvia servizio' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/><Pulsante Android: id= '@ + id / buttonStop' Android:testo= 'Interrompi servizio' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/>LinearLayout>
  • Una volta fatto questo, torna al file Attività principale class e aggiungere il codice corrispondente per collegare il file XML e il file MyServiceClass.
pacchetto com.example.newproject import androidx.appcompat.app.AppCompatActivity public class MainActivity estende AppCompatActivity implementa View.OnClickListener {private Button start, stop @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceStateView) setClayout .activity_main) start = (Button) findViewById (R.id.buttonStart) stop = (Button) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (Visualizza vista ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Passaggio 4

Una volta che hai finito di collegare le classi, eseguiamo il codice.

Nota: aggiungere il nome della classe del servizio nel file AndroidManifiest.xml.

Quindi, eseguiamo il codice.

Una volta avviato, il servizio verrà eseguito in background anche se viene aperta un'altra applicazione. È possibile avviare o interrompere il servizio facendo clic sui pulsanti.

Questa è una semplice demo in cui hai imparato a lavorare con i servizi Android.

Quindi, con questo, arriviamo alla fine di questo articolo su 'Tutorial sui servizi Android'.Spero che tu sia chiaro con gli argomenti trattati in questo blog.

Ora che hai letto il nostro blog Tutorial sui servizi Android, puoi dare un'occhiata a Edureka's per iniziare rapidamente il tuo apprendimento.

Hai domande? Non dimenticare di menzionarli nei commenti di questo blog 'Tutorial sui servizi Android'. Ci metteremo in contatto con voi.