android en attente de réponse du serveur
dire que je veux effectuer une requête Http au serveur, ce processus prend du temps.
maintenant, à cause de cela, la requête http doit être exécuté sur un thread différent (AsyncTask, Exécutables, etc.)
mais parfois j'ai juste besoin de la réponse quand je demande pour elle, afin de mettre à jour l'INTERFACE utilisateur
à l'aide de Fil.dormir dans une boucle pour attendre la réponse n'est pas bonne performance sage
exemple: je veux le nom de l'utilisateur, je demande au serveur pour elle, et je dois attendre qu'il
maintenant l'activité appelle le UserManager qui appelle la serverHandler qui effectue l'opération et retourne le résultat
peut-être un événement système est en ordre, mais je ne suis pas sûr de savoir comment faire cela dans ma scenerio
et franchement, je suis vraiment confus sur cette question
s'il vous plaît aider quelqu'un?
async tâche serait facile si je devais le faire à partir de l'activité, puis mise à jour de l'INTERFACE utilisateur lorsque c'est fait, mais mon système est plus compliqué alors que, et il a couches (activité->UserManager->ServerHandler)
le GUI séparation d'avec le reste du système est ce qui me confond dans ce cas, et rend plus difficile pour moi de m'en occuper
Vous pouvez utiliser des threads différents alors... peut-être que je ne suis pas aller vous droit
l'activité voit ses commandes de l'INTERFACE utilisateur, il demande à la usermanager pour le nom d'utilisateur qui va alors à la ServerHandler qui effectue une requête Http sur un autre fil, si je attendre pour que le thread pour finir il n'y a pas de point de tout cela, il stalles de l'INTERFACE utilisateur, donc j'ai besoin de trouver un moyen de le faire avec des événements & peut-être une file d'attente de requêtes http
OriginalL'auteur Amir.F | 2013-10-07
Vous devez vous connecter pour publier un commentaire.
Cela peut certainement être fait w/AsyncTask... Gérer la demande de réseau dans
doInBackground()
et une foisdoInBackground()
est fini,onPostExecute()
est déclenchée sur le thread d'INTERFACE utilisateur et c'est là que vous pouvez exécuter n'importe quel code qui permettra de mettre à jour les éléments d'INTERFACE utilisateur.Si vous avez besoin de quelque chose d'un peu plus générique et réutilisable, vous auriez probablement eu envie de mettre en œuvre un rappel... je vais consulter le thread d'INTERFACE utilisateur comme les client et l'AsyncTask comme le serveur.
Créer une nouvelle interface et de créer une méthode talons.
Demandez à votre client de passer instance de MyEventListener pour le serveur. Un typique de la façon de le faire est d'avoir votre client de mettre en œuvre l'interface (MyEventListener) et se faire passer lui-même pour le serveur.
Sur le
onPostExecute
de du serveur, vérifiez si la fonction de rappel est nulle et l'appel de la méthode appropriée.Vous pouvez en lire plus à propos des rappels ici: http://www.javaworld.com/javaworld/javatips/jw-javatip10.html
Non, vous n'avez pas à. Si vous faites une requête Http à deux différents points de fin, vous pouvez utiliser le même rappel. La seule chose de différent, vous aurez besoin de faire est de mettre en œuvre une logique de différencier la différence entre les deux. Comme à l'aide d'un ID de la demande ou quelque chose de similaire.
ouais c'est ce que j'ai fait en partie, OK cool merci beaucoup
OriginalL'auteur Alex Fu