Question

Je suis en train d'écrire un petit programme au sondage périodiquement le RSSI de la connexion WIFI. J'utilise SystemClock.Sleep(2000) dans le programme.

Le problème, je voudrais afficher le RSSI toutes les 2 secondes. Mais, actuellement, même si elle interroge toutes les 2 secondes, le résultat est affiché uniquement à la fin de la boucle.

Voici l'extrait de code:

for(int i=0;i<10;i++)
        {
            Date dt=new Date();
            WifiInfo info = wifi.getConnectionInfo();
            int rssi = info.getRssi();
            textStatus.append("\n\nRSSI :" +Integer.toString(rssi)); 
            SystemClock.sleep(2000);
        }

serais heureux, si vous avez une suggestion.

Cordialement Kiran

Était-ce utile?

La solution

Ne pas utiliser le sommeil dans le thread d'interface utilisateur.

Procédez comme suit à la place:

  • créer un MessageHandler (android.os.Handler) qui gère les messages à afficher (textStatus.append(...))
  • créer un thread de travail qui exécute votre boucle qui contient le sommeil
  • maintenant le fil de travail ne peut pas mettre à jour directement le textStatus. envoyer un message à la place du fil de travail au gestionnaire de messages.

AJOUTEE:

Voici un lien utile qui pourrait vous aider à:

Voir la section « Gestion des opérations coûteuses dans l'interface utilisateur de cette discussion »

http://developer.android.com/guide/appendix/ faq / commontasks.html # filetage

Autres conseils

  • Essayez d'utiliser les choses que vous faites dans un thread séparé,
  • l'exécuter jusqu'à ce dont vous avez besoin en permanence,
  • faire dormir pour 2sec, faites vos affaires,
  • mettre à jour le fil conducteur de celui-ci,
  • boucle de ce processus


Espérons que cela aidera un peu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top