Come gestire attività quando Orientamento cambia?
-
27-09-2019 - |
Domanda
vi scrivo un'attività, che carica i dati da un server e lo visualizza come un elenco utilizzando ArrayAdapter. Per questo sto mostrando un progresso finestra cioè di carico, mentre carica tutti i dati dal server. Poi ho chiudere la finestra in un gestore. Il mio problema è che quando mai a cambiare l'orientamento, la finestra di avanzamento è di nuovo dimostrato, che non è necessario, perché tutti i dati vengono visualizzati già?
Soluzione
Direi che si hanno due opzioni:
O si forza la vostra attività di non essere in grado di orientamento cambiamento:
<activity android:name="MainActivity" android:configChanges="keyboardHidden|orientation">
nel manifesto ( documentazione ), che dirà il sistema che si desidera orientamento gestire le modifiche da soli, e in questo caso, non si farà nulla. Ma, si preferisce aggiungere un po 'di codice in onPause()
e onSaveInstanceState()
perché questa attività potrebbe essere interrotta da Android quando si riceve una telefonata, per esempio. Quindi è necessario per gestire qualche risparmio.
In alternativa, si sceglie di impedire la visualizzazione della finestra di dialogo in cui è già stato visualizzato, o quando il thread in background è in esecuzione. Questo è facile è che si utilizza un AsyncTask per la parte download, perché è possibile utilizzare AsyncTask.getStatus che restituirà si lo stato del compito . Se è già in stato di finito, si deve annullare la finestra di dialogo.