0 votes

Scénario de travail sur Android

T 1 utilisateur a une activité principale utilisée pour l'interface utilisateur. 2 Le programme a besoin de communiquer avec ses pairs, de maintenir la connexion et d'attendre les messages. 3 quand un message arrive, il est affiché dans l'activité principale.

La question est donc de savoir si je dois utiliser un service pour la communication et quel type de service ? Et aussi, dois-je utiliser AsyncTask dans le service afin de garder mon interface utilisateur réactive et pourquoi ?

5voto

Trevor Johns Points 9310

Ce qui est important ici, c'est que tout travail intensif pour le CPU ou tout blocage des E/S (y compris l'attente de connexions réseau entrantes) se déroule dans un thread distinct du thread principal de l'interface utilisateur.

Si vous avez simplement besoin que la communication réseau reste en cours pendant que votre activité est en vie, utilisez un second thread au sein de votre activité. Si vous avez besoin de maintenir la communication réseau même après que votre activité ait été tuée, vous devrez utiliser un service.

Gardez à l'esprit que le comportement par défaut est qu'un service partage le même processus et le même thread que toute autre chose dans la même application (y compris l'activité qui fournit votre interface utilisateur). Pour cette raison, même si vous utilisez un service, vous devrez toujours créer un nouveau thread pour obtenir l'effet désiré.

AsyncTask est utilisé pour exécuter une tâche dans un thread séparé qui finira par se terminer et retourner un résultat. Si cela ressemble à votre application, alors n'hésitez pas à l'utiliser. Mais si vous gardez un port ouvert à travers plusieurs requêtes (ce qui signifie que vous n'avez pas une seule valeur de retour), l'utilisation de cette classe serait juste un fardeau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X