2014-06-11 9 views
5

C'è un motivo particolare per cui "onSaveInstanceState" non viene chiamato quando si preme il "pulsante Indietro"? Ha senso per me che lo stato di visualizzazione DOVREBBE essere salvato quando premo il pulsante Indietro. C'è un particolare caso d'uso che gli sviluppatori di Android avevano in mente che significa in realtà che è meglio che lo stato di visualizzazione NON venga salvato quando si preme indietro?Motivo per cui "onSaveInstanceState" non viene chiamato quando si preme "back button"?

risposta

2

Durante l'esecuzione della parte posteriore l'attività e i frammenti verranno distrutti. Perché l'istanza deve essere salvata quando non si desidera creare di nuovo l'attività (ad esempio cambiamento dell'orientamento).

Se si desidera salvare alcuni dati o, meglio, riportarli all'attività/al frammento di chiamata, è necessario utilizzare il meccanismo onActivityResult. Per questo è necessario avviare l'attività con il metodo "start for result" e impostare il risultato in un intento quando il pulsante back è stato premuto.

+0

E se si desidera memorizzare in modo persistente i dati durante la navigazione, è necessario utilizzare onResume() o onPause(). – EpicPandaForce

+2

Per quanto ne so, esistono 3 livelli di persistenza dei dati: savedInstanceState, SharedPreferences e dati SQL. Se ce ne sono, penso che i dati che voglio salvare si adattino meglio a SharedPreferences, perché è essenzialmente quello che è: le preferenze. Ma allora, perché non mettere tutto viewState in SharedPreferences? Qual è l'uso di savedInstanceState a tutti? – user3302602

Problemi correlati