Mise en œuvre d'une boucle while dans android
Je ne comprends pas la mise en œuvre d'une boucle while dans android.
Chaque fois que je le mettre en œuvre une boucle while à l'intérieur de la onCreate()
bundle (code indiqué ci-dessous)
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
TextView=(TextView)findViewById(R.id.TextView);
while (testByte == 0)
updateAuto();
}
rien ne démarre, et le programme entre dans un "accrochage" de l'état après un certain temps et je ne comprends pas pourquoi. Testbyte est comme suit:
byte testByte == 0;
et updateAuto()
est censé mettre à jour le code pour 1 seconde et affichage à l'intérieur de la textView partie. J'ai été en utilisant setText à l'intérieur de updateAuto() comme indiqué ci-dessous et tout fonctionne bien, mais une fois que j'en œuvre de la boucle while, je ne vois qu'un écran noir et puis une option pour forcer la fermeture de l'après quelques secondes grâce à elle "ne répond pas".
TextView.setText(updateWords);
Je l'ai changé pour un bouton format (ce qui signifie que je dois cliquer sur le bouton mettre à jour lui-même pour l'instant), mais je le veux pour mettre à jour lui-même au lieu de le faire manuellement en cliquant sur elle.
Suis-je mise en œuvre de la boucle while dans un mauvais sens?
J'ai aussi essayé d'appeler la boucle while dans une autre fonction, mais il me donne toujours l'écran noir du néant.
J'ai lu quelque chose à propos d'un Gestionnaire de service... que fait-il? Peut le Gestionnaire de service de mise à jour de mon TextView
la sécurité ou de la mémoire de manière efficace?
Merci beaucoup si quelqu'un allait donner quelques conseils sur ce que je dois faire sur ce.
byte testByte == 0;
ou il ne serait pas compiler 2) Vous n'êtes jamais la mise à jour de la valeur de testByte
, alors, pourquoi vous attendez-vous la boucle à la fin?Il devrait en fait être testByte = 0; Cela indique que vous souhaitez affecter la valeur 0 à la variable testByte. Ce que vous avez fait dans votre exemple était le test d'égalité (byte testByte == 0;) et, apparemment, cette déclaration a été évalué à vrai, et votre boucle while sera toujours vrai, alors vous serez coincé dans une boucle infinie.
oui je pensais en fait qu'il serait de travailler en fait. je sais maintenant que je vais avoir besoin de créer un autre thread pour gérer séparément de sorte qu'il ne soit pas bloqué dans une boucle infinie.
OriginalL'auteur Kyle Yeo | 2011-09-20
Vous devez vous connecter pour publier un commentaire.
Accrochez-vous. Et essayer de le suivre de près, ce sera d'une aide inestimable en tant que dev.
Tandis que les boucles ne devrait vraiment être mis en œuvre que dans un Thread séparé. Un thread séparé, c'est comme un deuxième processus de l'exécution de votre application. La raison pour laquelle elle fermée de force est en raison de l'exécution de la boucle dans le thread de l'INTERFACE utilisateur, de faire l'INTERFACE utilisateur incapable de faire autre chose que de passer par l'intermédiaire de cette boucle. Vous devez placer cette boucle dans le deuxième Fil de sorte que le Thread d'INTERFACE utilisateur peut être libre de tourner. Lors de l'enfilage, vous ne pouvez pas mettre à jour l'interface graphique, sauf si vous êtes dans le Thread de l'INTERFACE utilisateur. Voici comment faire dans ce cas.
D'abord, vous devez créer un Exécutable qui contient le code qui effectue une boucle dans la méthode run. Dans cet Exécutable, vous aurez à faire un deuxième Praticable que les postes au thread de l'INTERFACE utilisateur. Par exemple:
Ensuite il suffit de créer votre fil à l'aide de l'Exécutable et de le lancer.
Vous devriez maintenant voir votre application en boucle avec aucune force ne se ferme.
Heureux d'être de service. Assurez-vous de partager la connaissance lorsque vous devenez un pro. 😀
OriginalL'auteur Zaid Daghestani