Pergunta

Estou escrevendo uma atividade, que carrega dados de um servidor e os exibe como uma lista usando o ArrayAdapter. Para isso, estou mostrando uma caixa de diálogo de progresso, ou seja, carregando, enquanto carrega todos os dados do servidor. Então eu descarto o diálogo em um manipulador. Meu problema é que, sempre que eu altero a orientação, a caixa de diálogo de progresso é mostrada novamente, o que não é necessário, porque todos os dados já são exibidos?

Foi útil?

Solução

Eu diria que você tem duas opções:
Ou você forçará sua atividade a não ser capaz de alterar a orientação:

<activity android:name="MainActivity" android:configChanges="keyboardHidden|orientation"> 

em seu manifesto (documentação), que dirá ao sistema que você deseja lidar com mudanças de orientação sozinho e, nesse caso, você não fará nada. Mas você prefere adicionar algum código em onPause() e onSaveInstanceState() Porque essa atividade pode ser interrompida pelo Android quando você recebe uma ligação, por exemplo. Então você precisa lidar com algumas economias.

Ou você escolhe impedir a exibição da caixa de diálogo quando já foi exibida ou quando o thread de segundo plano estiver em execução. Isso é fácil é que você use uma assínceta para sua parte de download, porque você pode usar Asynctask.getStatus que vai devolver você o status da tarefa. Se já estiver no status final, você deve cancelar a caixa de diálogo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top