Android appelant AsyncTask juste après un autre fini

J'ai un problème avec Android AsyncTask. Il y a une Activité qui contient quelques TextView un bouton et une photo. Lorsqu'un utilisateur a entré cette activité que je lance une asynctask pour vérifier si l'utilisateur peut aller vers de l'activité (jusqu'à ce que la tâche de ne pas terminer le bouton n'est pas actif). Alors je veux commencer un autre asyntask pour obtenir de l'image.
J'ai donc fait une inner classe:

AsyncTask<String, Void, JSONObject>() authTask = new AsyncTask<String, Void, JSONObject>() {
@Override
protected JSONObject doInBackground(String... params) {
//call the rest api
}
@Override
protected void onPostExecute(JSONObject result) {
//check the result
//and make another asynctask
AsyncTask<String, Void, Bitmap> imageTask = new Async.... {
//get image
}
imageTask.execute();
}
}

et je l'appelle
authTask.execute(); du thread d'INTERFACE utilisateur.

J'ai un mauvais pressentiment à ce sujet, en particulier, il semble ne fonctionne pas (c'est ok quelques fois, mais tout à coup, il "freeze": pas d'exception, juste suspendu et la barre de progression, c'est de filer. Rien ne se passe et le bouton ne sera pas actif).
Il y a une autre façon d'obtenir de l'information et quand elle a fini de démarrer immédiatement une autre tâche?

UDPATE:
Je travail avec l'api de niveau 10. Dans authTask-je obtenir de l'information qui est nécessaire pour démarrer imageTask (une pièce d'identité) et j'ai donc appeler ces tâches dans une rangée. L'api de niveau 10, c'est possible?

Merci d'avance!

Br, Peter

  • Êtes-vous sûr que l'auth tâche a vraiment fini. Peut-être que le gel soit en raison d'une longue http délai d'attente?
  • Je suppose que vous avez débogué les bits doInBackground qui peut accrocher presque indéfiniment? Êtes-vous à l'aide de time-out qui sont raisonnables lors de l'appel de votre API REST? Généralement, la seule exigence pour un AsyncTask est que vous créez sur le thread d'INTERFACE utilisateur qui vous êtes en train de faire.
  • Oui j'ai essayé de déboguer et je ne peux pas reproduire le problème lors du débogage... L'autre chose, c'est le délai d'attente. J'ai mis délai raisonnable, mais cette cause et un autre bug, une autre classe. (C'est probablement mon mauvais, besoin d'un complément d'enquête.)
InformationsquelleAutor hcpeter | 2012-04-06