Différence entre service, tâche asynchrone et thread?

Quelle est la différence entre Service, Async Task & Thread. Si je ne me trompe pas tous sont utilisés pour faire des choses en arrière-plan. Alors, comment décider lequel utiliser et quand?

    Vous avez probablement déjà lu la description de la documentation à leur sujet, je ne les répéterai pas. Au lieu de cela, j’essaierai de répondre avec mes propres mots, en espérant qu’ils vous aideront.

    • Le service est comme une activité mais n’a pas d’interface. Probablement si vous voulez aller chercher la météo par exemple, vous ne créerez pas d’activité vide pour cela, vous utiliserez pour cela un Service.

    • Un fil est un fil, vous le savez probablement déjà de l’autre côté. 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.

    • Un AsyncTask est un thread intelligent qu’il est conseillé d’utiliser. Intelligent comme il peut aider avec ses méthodes, et il existe trois méthodes qui s’exécutent sur le thread de l’interface utilisateur, ce qui est bien pour mettre à jour les composants de l’interface utilisateur.

    J’utilise fréquemment Services, AsyncTasks. Thread moins, ou pas du tout, car je peux presque tout faire avec AsyncTask.

    C’est la réponse la plus simple à votre question

    Fil

    est une unité d’exécution qui s’exécute “parallèlement” au thread principal est un point important, vous ne pouvez pas mettre à jour un composant d’interface utilisateur à partir du thread principal ici.

    AsyncTask

    est pour une tâche courte car est lié à l’activité de l’hôte par exemple si vous créez une AsyncTask qui va extraire des données d’un serveur (NE FAITES PAS CECI) lorsque vous faites pivoter le téléphone et que l’activité est recréée, l’AsyncTask sera recréé.

    Un service

    résoudre le problème ci-dessus car il est séparé de l’activité qui l’invoque afin qu’il puisse continuer à fonctionner même si l’activité est détruite, il s’exécute dans le thread principal (méfiez-vous d’ANR) utilisez un service d’arrière-plan (étendre IntentService crée le thread de travail automatiquement pour vous) . Le service est comme une activité sans interface utilisateur , est bon pour les tâches longues

    Plus d’informations je souhaiterais que quelqu’un m’ait dit il y a quelques jours:

    • Vous pouvez partager des variables globales, telles que des threads, entre Activités et Services.
    • Votre application ainsi que toutes ses variables globales ne seront pas effacées tant qu’une activité ou un service est toujours présent.
    • Si vous avez une instance de service dans votre application et que le système d’exploitation a besoin de ressources, cela détruit d’abord vos activités, mais tant qu’il existe le service, le système d’exploitation ne supprimera pas votre application avec ses variables globales.

    Mon cas d’utilisation est le suivant: j’ai un thread dans l’espace global qui est connecté à un serveur et une activité qui affiche les résultats. Lorsque l’utilisateur appuie sur le bouton d’accueil, l’activité passe en arrière-plan et un nouveau service est lancé. Ce service lit ensuite les résultats du thread et affiche des informations dans la zone de notification lorsque cela est nécessaire. Je ne m’inquiète pas de la destruction par le système d’exploitation de mon activité, car je sais que tant que le service est en cours d’exécution, il ne détruit pas le thread.

    En résumé, Service pour time consuming tasks , AsyncTask pour les time consuming tasks de short-lived tasks , Thread est une standard java construction pour les threads.

    Du sharepoint vue du développeur:

    Thread : Utilisé pour exécuter l’ensemble des codes parallèlement au thread principal. Mais vous ne pouvez pas gérer l’interface utilisateur à l’intérieur du thread. Pour cela, vous devez utiliser Handler . Hadler fonctionne comme un thread mais peut également gérer l’interface utilisateur.

    ASyncTask : Utilisé pour gérer les tâches que vous ne pouvez pas faire fonctionner sur le thread principal. Par exemple, une requête HTTP est un travail très lourd qui ne peut pas être manipulé sur le thread principal. Vous gérez donc la requête HTTP dans ASyncTask Elle fonctionne parallèlement à votre thread principal de manière asynchrone en arrière-plan. événements correspondants.

    Service : processus d’arrière-plan. Il est utilisé lorsque vous devez effectuer un traitement sans interface utilisateur associée.

    Le service est comme une activité qui demande beaucoup de temps, mais la tâche Async nous permet d’effectuer des opérations longues / en arrière-plan et d’afficher son résultat sur le thread d’interface utilisateur sans avoir à manipuler les threads.