2010-11-28 17 views
2

J'ai un thread qui écoute une connexion TCP. Quand une connexion est établie, je voudrais essentiellement arrêter ce que fait l'activité en cours, et passer à une autre activité qui exécute des threads différents et affiche une disposition différente.Récupération de l'activité en cours à partir du thread

Pour l'instant, je voudrais également que ce thread continue à fonctionner (en attente d'une connexion TCP).

Je peux changer l'activité de l'un à l'autre en utilisant startActivity() sur un Intent, mais cela ne fonctionne pas dans mon thread.

Comment puis-je atteindre ce comportement?

Merci beaucoup,

James

Répondre

5

Règles générales de la programmation des tâches de longue durée dans Android. Si vous avez:

  1. Une tâche à exécution courte (thread) qui est utilisé uniquement par une activité à un moment puis utilisez AsyncTask.

  2. Une tâche de longue durée qui doit survivre au cycle de vie de l'activité et/ou est utilisée par plusieurs activités (également externe à votre application), que d'utiliser Service. Le service est un processus distinct qui résiste mieux aux arrêts que l'activité.

  3. Une tâche qui doit être exécutée en fonction de conditions externes telles que: emplacement modifié, réseau disponible, etc. Ou si vous avez besoin d'une synchronisation périodique de données ou d'une tâche basée sur le minuteur, vous n'avez pas besoin tâche en cours d'exécution, il suffit d'enregistrer votre code avec une API appropriée et le système d'exploitation l'appellera si nécessaire. C'est ce qu'on appelle la programmation asynchrone et est l'option préférable sur Android, car elle minimise l'utilisation de la mémoire et du processeur en invoquant seulement le code quand il doit être appelé.

+0

Merci beaucoup pour ces explications, c'est très utile. J'ai besoin d'utiliser un Service ou une API alors (2 ou 3). Je ne suis pas sûr s'il y a une API qui peut "attendre une connexion TCP". Savez-vous s'il vous plaît comment je peux trouver cela? Merci autrement! Très utile! – James

+0

Un service peut-il charger une activité? Mon service serait d'attendre une connexion TCP pour toujours. Quand cela arrive, une activité qui reçoit et envoie un paquet UDP sera lancée (elle a aussi sa propre mise en page). Cela fonctionnerait-il s'il vous plaît? – James

+0

Avez-vous besoin d'avoir une connexion TCP constamment ouverte même lorsque l'application est en arrière-plan? Cela permettra de drainer la batterie et peut-être être coûteux sur le réseau mobile. –