Je cherche quel service devrait être utilisé dans les applications Android.
Docs dit
Un service est un composant d'application qui peut effectuer des opérations de longue durée en arrière-plan et ne fournit pas d'interface utilisateur.
J'ai lu ce fil Les threads d'application et les threads de service qui disent que les mêmes services sont destinés à l'exécution d'une opération en arrière-plan.
Mais ici, cela peut être fait en utilisant Thread
également. Toute différence entre eux et où vous devriez les utiliser
Un service est conçu pour exécuter votre tâche indépendamment de la Activity
. Il vous permet d'exécuter n'importe quelle tâche en arrière-plan. Cela s’exécute sur le thread principal d’interface utilisateur. Ainsi, lorsque vous souhaitez effectuer une opération sur le réseau ou à forte charge, vous devez utiliser la variable Thread
.
Exemple: Supposons que vous souhaitiez sauvegarder quotidiennement vos messages instantanés en arrière-plan, puis utilisez la variable Service
.
Threads
est pour exécuter votre tâche dans son propre thread au lieu du thread principal de l'interface utilisateur. Vous pouvez l'utiliser lorsque vous souhaitez effectuer des opérations réseau importantes, telles que l'envoi continu d'octets au serveur, associé aux composants Android. Lorsque votre composant détruit qui a lancé cette opération, vous devriez également l’arrêter.
Exemple: vous utilisez la Thread
dans l'activité à certaines fins, il est recommandé de l'arrêter lorsque votre activité est détruite.
UPDATE basé sur la dernière documentation:
Android a inclus dans sa documentation le moment où vous devriez utiliser Service vs Thread. Voici ce qu'il dit:
Si vous devez effectuer un travail en dehors de votre thread principal, mais uniquement pendant le l'utilisateur interagit avec votre application, alors vous devriez probablement au lieu de créer un nouveau thread et non un service. Par exemple, si vous voulez jouer de la musique, mais seulement pendant que votre activité est En cours d’exécution, vous pouvez créer un thread dans onCreate (), commencez à l’exécuter dans onStart (), puis arrêtez-le dans onStop (). Pensez également à utiliser AsyncTask ou HandlerThread, au lieu de la classe Thread traditionnelle. Voir le Document sur les processus et les threads pour plus d'informations sur les threads.
N'oubliez pas que si vous utilisez un service, il est toujours exécuté dans votre fichier le thread principal de l'application par défaut, vous devriez donc toujours créer un nouveau fichier thread au sein du service s’il effectue un travail intensif ou bloquant opérations.
Une autre différence notable entre ces deux approches est que Thread dormira si votre appareil est en veille. En revanche, le service peut fonctionner même si l'appareil se met en veille. Prenons par exemple jouer de la musique en utilisant les deux approches.
Thread Approach: la musique ne sera lue que si votre application est active ou si l'écran est allumé.
Approche de service: la musique peut toujours jouer même si vous avez réduit votre application ou si l'écran est éteint.
Remarque: à partir du niveau 23 de l'API, vous devriez Testez votre application avec Doze .
C'est le principe que je suis en grande partie suivre
Utilisez un fil quand
Utiliser un service quand
Référence de https://developer.Android.com/guide/components/services.html
Un service est simplement un composant qui peut s'exécuter en arrière-plan, même lorsque l'utilisateur n'interagit pas avec votre application. Ainsi, vous ne devez créer un service que si c'est ce dont vous avez besoin.
Si vous devez travailler en dehors de votre thread principal, mais uniquement pendant que l'utilisateur interagit avec votre application, vous devriez probablement plutôt créer un nouveau thread et non un service.
Par exemple, si vous souhaitez écouter de la musique, mais uniquement pendant que votre activité est en cours, vous pouvez créer un fil dans onCreate (), le lancer dans onStart (), puis l'arrêter dans onStop ().
N'oubliez pas que si vous utilisez un service, celui-ci est toujours exécuté par défaut dans le thread principal de votre application. Par conséquent, vous devez toujours créer un nouveau thread au sein du service s'il effectue des opérations intensives ou de blocage.
Vous avez probablement déjà lu la description de la documentation à leur sujet, je ne les répéterai pas, je tenterai plutôt de répondre avec mes propres mots, en espérant qu'ils vous aideront.
Service est comme une activité mais n'a pas d'interface. Si vous voulez par exemple consulter la météo, vous ne créerez pas d'activité vide pour cette activité, vous utiliserez pour cela un service.
Un Thread est un thread, vous le connaissez probablement déjà dans une autre partie. Vous devez savoir que vous ne pouvez pas mettre à jour l'interface utilisateur à partir d'un thread. Vous devez utiliser un gestionnaire pour cela, mais lisez plus loin.