Voici le scénario:retour Android AsyncTask rejetant un ProgressDialog après la rotation de l'écran
- page de connexion de compte
- En cliquant sur "Sign-in" déclenche une connexion AsyncTask
- Pour bloquer l'interface utilisateur lors de l'accès au réseau, un ProgressDialog apparaît
- à son retour, le ProgressDialog est rejeté et l'utilisateur transmis sur
Th Ce flux fonctionne très bien.
Voici le problème:
- L'utilisateur peut faire pivoter l'écran alors que le AsyncTask est l'exploitation forestière/elle dans
Actuellement, le ProgressDialog est référencé par un champ de classe, et Rejeté à l'aide que pointeur et appel à .dismiss().
Si l'écran est pivoté, cependant, tout se bloque.
Probablement parce que l'activité est recréée? Mon soupçon est que la fermeture autour de cette référence de champ pointe vers un objet inaccessible. Quelle est ta prise?
Comment puis-je le résoudre de manière fiable et élégante? Il suffit d'ajouter if (... != null)
chèques?
Plus généralement, je dois avouer que je ne comprends pas la « meilleure pratique » à appliquer dans les cas comme celui-ci:
- Activité A déclenche une AsyncTask
- L'utilisateur quitte l'activité A (bouton de retour? rotation de l'écran? onCliquez sur ce qui démarre Intention?)
L'AsyncTask est de retour lorsque l'activité A n'est plus la plus haute et son onPostExecute() a un effet d'interface utilisateur, notez que l'observateur délégué original n'est plus disponible .
confused (note: Je suis un débutant, donc une explication approfondie me aiderait beaucoup)
S'il vous plaît expliquer comment cela aide dans mon cas. – Robottinosino
Cela peut fonctionner, mais le raisonnement est faux. 'android: configChanges' spécifie les changements de configuration que' Activity' va gérer lui-même avec 'onConfigurationChanged(). Voir [docs android] (http://developer.android.com/guide/topics/manifest/activity-element.html), y compris cette note - "Note: L'utilisation de cet attribut doit être évitée et utilisée uniquement comme un Pour plus d'informations sur la façon de gérer correctement un redémarrage en raison d'un changement de configuration, veuillez lire la section «Gestion des modifications d'exécution». – iagreen
@iagreen, merci pour la correction. Je vais essayer de modifier le raisonnement en fonction de vos informations. merci –