Android 1.5: AsyncTask méthode doInBackground () pas appelé quand get () est appelée

StackOverflow https://stackoverflow.com/questions/2502874

  •  21-09-2019
  •  | 
  •  

Question

Je suis en cours d'exécution dans un problème avec la façon dont mes asynctasks sont exécutés. Voici le code de problème:

firstTask = new background().new FirstTask(context);
if (firstTask.execute().get().toString().equals("1")) {
    secondTask = new background().new SecondTask(context);
}

Ce que je fais ici est la création d'un nouvel objet AsyncTask, l'assigner à firstTask puis l'exécuter. Je veux ensuite déclencher une AsyncTask séparée lorsque le premier est fait et en vous assurant qu'il renvoie une valeur de succès (1 dans ce cas). Cela fonctionne parfaitement sur Android 2.0 et plus. Cependant, je teste avec Android 1.5 et les problèmes commencent à apparaître. Le code ci-dessus se déroulera la première AsyncTask mais doInBackground () est jamais appelé malgré OnPreExecute () est appelée. Si je suis d'exécuter la première tâche sans méthode get (), doInBackground () est appelée et tout fonctionne comme prévu. Sauf que maintenant je n'ai pas un moyen de déterminer si la première tâche terminée avec succès afin que je puisse dire à la deuxième tâche à exécuter. Est-il sûr de supposer que c'est un bug avec AsyncTask sur Android 1.5? D'autant plus que l'API ( https://developer.android .com / référence / android / os / AsyncTask.html # get% 28% 29 ) dit que la méthode get a été mis en œuvre depuis API 3. Est-ce qu'il y a un moyen de réparer ceci? Ou une autre façon de déterminer que la première tâche est terminée?

Était-ce utile?

La solution

Si vous allez bloquer (via get()), pourquoi prendre la peine avec AsyncTask en premier lieu? L'ensemble point de AsyncTask est de ne pas bloquer.

Si vous voulez avoir SecondTask exécuter lorsque FirstTask est fait, ont FirstTask exécuter SecondTask dans FirstTask de onPostExecute().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top