J'ai un HttpPostAsyncTask
qui étend la classe AsyncTask
que j'utilise pour envoyer des données à mon serveur express et obtenir une réponse de celui-ci. Maintenant, bien que la réponse soit renvoyée et que je renvoie la réponse sous la forme d'une chaîne, l'attribut doInBackground()
ne se termine pas et donc la méthode AsyncTask
est toujours en cours.
Mon doInBackground()
ressemble à ceci :
URL url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
int statusCode = urlConnection.getResponseCode();
switch (statusCode) {
case 400:
return "Error 400 - Bad request.";
case 401:
return "Error 401 - Unauthorized request.";
}
Maintenant, quand j'enregistre le statusCode
je suis en train de le faire correctement. Mais le doInBackground()
ne se termine pas, et donc la tâche est toujours en cours.
J'ai fait de nombreuses recherches sur Internet, mais je n'ai pas réussi à trouver ce qui déclenche exactement la doInBackground
de la méthode à la fin ? Si cela se termine, je suppose que l'AsyncTask se terminera également, et je pourrai recevoir le résultat dans onPostExecute()
méthode.
Edit 1 : J'ai donc une activité A qui appelle startActivityForResult
deux fois. D'abord, j'ai un GoogleSignInIntent
et j'appelle startActivityForResult
pour cela. Si elle renvoie ses résultats correctement, j'appelle startActivityForResult
à nouveau (avec un autre requestCode
évidemment). Maintenant, j'ai suivi cet article et mis en place un CustomCallback pour toutes les statusCode
dans le doInBackground()
méthode. Je renvoie également une valeur à la fin de l'opération. doInBackground()
.
Ainsi, l'intention GoogleSignIn renvoie correctement les résultats et je lance l'intention suivante, pour laquelle mon serveur renvoie un code de réponse correct et j'appelle le gestionnaire de rappel personnalisé et renvoie une chaîne de caractères à partir de ma page Web. doInBackground()
. Pourtant, le onPostExecute()
n'est pas appelé.