2011-04-19 8 views
0

J'ai cette activité qui classe une classe de connexion dans un événement onclick. Ma classe de connexion fait essentiellement un post http et analyse la réponse XML du serveur. Cela se passe à l'intérieur d'un thread dans le constructeur de la classe Login.Notifiy Activité lorsque AsyncTask est prêt?

Mon problème est dans cette partie:

Login login = new TvsLogin(emailEditText.getText().toString(), passwordEditText.getText().toString()); 
if(login.isErrorOccurd()){ 

} 
else{ 

} 

En fait, alors que le constructeur de connexion fait c'est magique, le reste de mon code est exécuté et login.isErrorOccurd() apparaît faux et mon bloc autre est exécuté, même si il y a une erreur

Des suggestions comment je devrais résoudre ce problème? La connexion peut prendre du temps, il est donc logique de le faire dans un thread, mais cela ne fonctionne pas comme je le souhaitais.

EDIT:

Comme Pixie dit, je vais devoir utiliser un AsyncTask. J'aimerais quand même faire le reportage dans mon activité. Comment puis-je faire cela? (Est-ce une bonne idée, ou dois-je simplement le faire dans la méthode onPostExecute() de mon activité?)

Répondre

2

Il n'y a rien d'étrange dans ce comportement. La connexion n'est pas vérifiée dans le thread secondaire lorsque la méthode login.isErrorOccurd() est appelée. Vous pouvez utiliser la méthode Activity.runOnUiThread() pour notifier votre activité sur les résultats de vérification de connexion ou vous pouvez utiliser la classe AsyncTask pour le laisser faire ce travail pour vous. Mais de toute façon la vérification d'erreur sera dans une autre partie du code.

+0

Vous voulez dire que je ne peux pas vérifier les erreurs dans mon activité? – networkprofile

+0

Vous pouvez, mais vous ne pouvez pas le faire correctement après le démarrage d'un thread qui vérifie la connexion. Ce thread doit notifier votre activité sur le résultat de la vérification, puis l'activité doit effectuer une action en fonction des résultats de la vérification. – Michael

+0

Comment dois-je notifier l'activité de ma classe AsyncTask? – networkprofile

Questions connexes