J'écris une activité, qui charge des données à partir d'un serveur et l'affiche comme une liste en utilisant ArrayAdapter. Pour cela, je montre une boîte de dialogue de progression en cours de chargement, alors qu'elle charge toutes les données du serveur. Ensuite, je rejette le dialogue dans un gestionnaire. Mon problème est que lorsque je change d'orientation, la boîte de dialogue de progression s'affiche de nouveau, ce qui n'est pas nécessaire, car toutes les données sont déjà affichées?Comment gérer l'activité lorsque l'orientation change?
Répondre
Je dirais que vous avez deux options:
Soit vous forcer votre activité à ne pas être en mesure de changer d'orientation:
<activity android:name="MainActivity" android:configChanges="keyboardHidden|orientation">
dans votre manifeste (documentation), qui dira le système que vous voulez gérer les changements d'orientation par vous-même, et dans ce cas, vous ne ferez rien. Mais, vous préférez ajouter du code dans onPause()
et onSaveInstanceState()
car cette activité peut être interrompue par Android lorsque vous recevez un appel téléphonique par exemple. Vous devez donc gérer quelques économies. Ou, vous choisissez d'empêcher l'affichage de la boîte de dialogue lorsque celle-ci a déjà été affichée ou lorsque votre thread d'arrière-plan est en cours d'exécution. C'est facile si vous utilisez un AsyncTask pour votre téléchargement, car vous pouvez utiliser AsyncTask.getStatus qui vous renverra the status of the task. Si l'état est déjà terminé, vous devez annuler la boîte de dialogue.
merci sephy – Srinivas
Mon problème est que? comment éviter l'affichage de la boîte de dialogue de progression, que j'ai affiché dans OnCreate(). Affter le dialogue dissemblant. J'ai changé d'orientation, encore une fois l'activité recréée, donc la boîte de dialogue s'affiche à nouveau? comment l'éviter? – Srinivas
oh alors vous devez vérifier l'état "terminé" de l'asynctask non? – Sephy