Tutoriel sur les services Android: comment exécuter une application en arrière-plan?



Ce didacticiel sur les services Android vous aide à comprendre comment effectuer des opérations en arrière-plan, telles que la lecture de musique, il n'a pas d'interface utilisateur attachée

En utilisant souvent plusieurs applications sur votre smartphone, vous souhaiterez peut-être passer d'une application à une autre mais aussi vous assurer que toutes vos applications restent actives en arrière-plan. Ce ne sont que les services offerts par . Ainsi, cet article sur le didacticiel des services Android vous aidera à comprendre comment travailler avec les services.

Je couvrirai les sujets suivants:





Que sont les services Android?

Le service est essentiellement un processus. Service Android est un composant qui s'exécute en arrière-plan pour effectueropérations de longue durée sans interagir avec l'utilisateur et cela fonctionne même si l'application est détruite.Un autre composant d'application peut démarrer un service et il continue de s'exécuter en arrière-plan même si vous basculez vers une autre application.

De plus, un composant peut se lier à un service afin d'interagir avec lui et également effectuer une communication interprocessus.



Remarque: Le service android.app.Service est une sous-classe de la classe ContextWrapper et le service Android n'est pas un thread ou un processus séparé.

Cycle de vie des services Android

Le cycle de vie des services Android peut avoir deux formes de services. Le cycle de vie d'un service suit deux chemins différents, à savoir:

  1. Commencé
  2. Lié

Commencé



Un service est démarré lorsqu'un composant d'application appelle startService () méthode. Une fois démarré, un service peut s'exécuter en arrière-plan indéfiniment, même si le composant responsable du démarrage est détruit. Il est arrêté en utilisant le aire d'autoroute () méthode. Le service peut également s'arrêter en appelant le stopSelf () méthode.

Lié

Un service est lié lorsqu'un composant d'application s'y lie en appelant bindService () . Le service lié offre une interface client-serveur qui permet aux composants d'interagir avec le service, d'envoyer des demandes et d'obtenir des résultats. Il traite à travers la communication inter-processus (IPC). Le client peut dissocier le service en appelant le unbindService () méthode.

Cycle de vie du service Android - Tutoriel sur les services Android - Edureka

Passons à la section suivante de cet article sur les services Android, discutons des différentsméthodes sous la classe de service.

Tutoriel sur les services Android: méthodes

Il existe quelques méthodes qui vous permettent d'effectuer facilement des opérations sur n'importe quelle application. Certains d'entre eux sont:

MéthodeLa description
onStartCommand ()

Cette méthode est appelée lorsqu'un autre composant, comme par exemple une activité, demande le démarrage du service, en appelant startService () .

Il est de votre responsabilité d'arrêter le service lorsque le travail correspondant est effectué en utilisant stopSelf () ou aire d'autoroute () méthodes.

détacher ()

Appelle cette méthode lorsqu'un autre composant souhaite se lier au service en appelant bindService () .

Pour implémenter cela, vous devez fournir une interface que les clients utilisent afin de communiquer avec le service. Il renvoie un IBinder objet. Si vous ne souhaitez pas autoriser la liaison, revenez nul .

onUnbind ()

Le système appelle cette méthode lorsque tous les clients sont déconnectés d'une interface particulière publiée par le service.

onRebind ()

Appelle cette méthode lorsque de nouveaux clients sont connectés au service après avoir été préalablement averti que tous sont déconnectés dans onUnbind (intention) .

onCreate ()

Le système appelle cette méthode lorsque le service est créé pour la première fois en utilisant onStartCommand () ou détacher () . Il est nécessaire d'effectuer une configuration unique.

onDestroy ()

Cette méthode est appelée lorsque le service n'est plus utilisé et est en cours de destruction. Votre service doit l'implémenter afin de nettoyer toutes les ressources telles que les threads, les écouteurs enregistrés, les récepteurs, etc.

Code squelette

classe publique MainActivity extends 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, 'Téléchargement terminé. Téléchargement URI:' + chaîne, Toast.LENGTH_LONG) .show () textView.setText ('Téléchargement terminé')} else {Toast.makeText (MainActivity.this, 'Téléchargement échoué', Toast.LENGTH_LONG) .show () textView.setText ('Téléchargement échoué')}}}} @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) // ajouter des informations pour le service quel fichier télécharger et où store intent.putExtra (DownloadService.FILENAME, 'index.html') intent.putExtra (DownloadService.URL, 'www.edureka.co') startService (intent) textView.setText ('Service démarré')}}

Dans cet exemple, vous pouvez voir les méthodes comme onCreate () , pour résumer () , onPause () . Ces méthodes constituent la structure des services sous Android.

Passons maintenant à la partie pratique de ce didacticiel sur les services Android, voyonscomment créer un service et le gérer.

Démo

Voyons comment lire de la musique en arrière-plan. Pour ce faire, j'utiliserai Studio Andriod .

Étape 1

Créez un nouveau projet vide. Nommez votre projet et cliquez sur le dossier Java et cliquez sur le Activité principale . Tout d'abord, ajoutez Lecteur multimédia afin que vous puissiez importer les détails du lecteur comme démarrer, définir la boucle et ainsi de suite.

package com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity classe publique MainActivity étend AppCompatActivity {@Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R.layPlout.actayer_main) MediaPlayer player = MediaPlayer player = (ceci, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Remarque: si vous l’utilisez pour la première fois, n’oubliez pas d’activer le BIOS. Vous pouvez le faire en redémarrant votre système.

Vous devrez ajouter un appareil virtuel. Cliquez simplement sur Ouvrez le gestionnaire AVD.

comment utiliser les opérateurs bit à bit en java

Sélectionnez un appareil de votre choix et vous êtes prêt à partir!

Cela ne fonctionnera que lorsque l'écran est actif, mais pour que cette application fonctionne même en arrière-plan, vous devez ajouter quelques lignes de code supplémentaires dans le activity_main.xml fichier.

Étape 2

Une fois que vous avez exécuté le code correspondant, vous pourrez exécuter l'application et pourrez lire la musique en arrière-plan, c'est-à-dire que si une autre application est ouverte, cet audio sera toujours lu.

Voyons comment cela peut être fait.

  • Créez une autre classe dans le dossier Java et nommez-la. Ici, je l'ai appelé ' MyService '.
  • Cette classe étend la classe Service.
  • Une fois que vous avez les méthodes de la classe Service, implémentez les méthodes en cliquant sur alt + Entrée.
  • Après cela, vous devez remplacer les méthodes. Alors, faites un clic droit sur la fenêtre pour obtenir les options.
  • Générez les méthodes de remplacement, sélectionnez onStartCommand () , et OnDestroy ().
  • Modifier le onStartCommand () méthodes en ajoutant le code suivant:
MediaPlayer player = MediaPlayer.create (ceci, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Remarque: Supprimer ce code dans le Activité principale.

  • Cela lancera une erreur vous demandant de supprimer l'instruction. Donc, supprimez l'instruction return et déclarez MediaPlayer comme méthode privée et retournez START_STICKY . Cela renverra le statut de démarrage.
  • Ajouter player.stop () dans le onDestroy () méthode.

Étape 3

Aller à du boeuf et allez aux mises en page, cliquez sur android_main.xml pour obtenir le fichier XML de l'application.

  • Supprimez le TextView et remplacez-le par LinearLayout et ajoutez des boutons. Ajoutez le code correspondant.
<Disposition linéaire Android:orientation= 'vertical' Android: layout_width= 'match_parent' Android: layout_height= 'wrap_content' Android: layout_centerVertical= 'vrai' outils:ignorer= 'Contraintes manquantes'><Bouton Android: id= '@ + id / buttonStart' Android:texte= 'Démarrer le service' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/><Bouton Android: id= '@ + id / buttonStop' Android:texte= 'Arrêter le service' Android: layout_width= 'wrap_content' Android: layout_height= 'match_parent'/>Disposition linéaire>
  • Une fois que vous avez fait cela, revenez à la Activité principale class et ajoutez le code correspondant afin de lier le fichier XML et le MyServiceClass.
package com.example.newproject import androidx.appcompat.app.AppCompatActivity classe publique MainActivity étend AppCompatActivity implémente View.OnClickListener {bouton privé démarrer, arrêter @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) setContentView (R. .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))}}}

Étape 4

Une fois que vous avez terminé de lier les classes, exécutons le code.

Remarque: ajoutez le nom de la classe Service dans le fichier AndroidManifiest.xml.

Ensuite, exécutons le code.

Une fois que vous démarrez le service, il s'exécutera en arrière-plan même si une autre application est ouverte. Vous pouvez démarrer ou arrêter le service en cliquant sur les boutons.

Il s'agit d'une démonstration simple dans laquelle vous avez appris à utiliser les services Android.

Donc avec cela, nous arrivons à la fin de cet article sur «Tutoriel sur les services Android».J'espère que vous êtes clair avec les sujets traités dans ce blog.

Maintenant que vous avez parcouru notre blog Tutoriel sur les services Android, vous pouvez consulter Edureka's pour démarrer rapidement votre apprentissage.

Vous avez des questions? N'oubliez pas de les mentionner dans les commentaires de ce blog 'Tutoriel sur les services Android'. Nous reviendrons vers vous.