Les détails sur l'utilisation du Looper.prepare() dans Android
Je vais avoir un peu de mal à comprendre comment utiliser le Looper
prepare()
/loop()
/quit()
logique.
J'ai trois fils: l'un est le thread de l'INTERFACE utilisateur, l'un est un jeu de logique thread et le dernier est un réseau de communication thread (un thread d'arrière-plan, ne vit que, tout en étant utilisé).
Le jeu thread a beaucoup de dépendances sur les résultats des appels de réseau, donc j'ai voulu tourner le réseau de fil de de la jeu de fil et un Handler
d'afficher le résultat en arrière.
Bien sûr, depuis le thread d'INTERFACE utilisateur n'est pas en cause, je dois appeler Looper.prepare()
... quelque part. J'ai pensé qu'il doit être appelé dans le jeu thread, mais je ne peux pas le faire parce que loop()
prend le dessus.
Comment dois-je faire une publication sur le jeu de fil de réseau de fil avec mon gestionnaire?
Vous devez vous connecter pour publier un commentaire.
Ce qu'il se passe, c'est que une fois que vous appelez la fonction Looper.prepare (), suivie par Looper.loop() sur un Fil, tout ce que Thread jamais faire est d'assurer le service de sa MessageQueue jusqu'à ce que quelqu'un appelle quit() sur son Looper.
L'autre chose à réaliser est que, par défaut, lorsqu'un Gestionnaire est instancié, c'est le code s'exécute toujours sur le Fil, il a été créé sur
Ce que vous devez faire est de créer un nouveau Thread et dans run() appel de la fonction Looper.prepare(), le programme d'installation n'importe quel gestionnaire, et ensuite appeler la fonction Looper.loop().
En gardant ces éléments à l'esprit ici est le modèle de base que j'utilise beaucoup de lieux. Aussi, il ya une bonne chance que vous devriez juste être à l'aide de AsyncTask à la place.
Pourriez-vous dire quelques exemples de ce que vous êtes en utilisant votre réseau de fil? Je pense que vous pouvez résoudre vos problèmes sans l'aide de la fonction Looper.
Vous pouvez utiliser ASyncTask pour effectuer des tâches d'arrière-plan qui peut mettre à jour certaines valeurs dans votre thread de l'INTERFACE utilisateur. Si l'utilisateur n'a plus à attendre jusqu'à ce que le fond de l'opération sera terminée, vous pouvez afficher ProgressDialog et de bloquer l'application dans OnPreExecute méthode, puis le cacher dans onPostExecute.
Comme je l'ai dit, veuillez décrire vos besoins et à votre cible que vous souhaitez atteindre.