Non è necessario memorizzare le preferenze utente in onPause perché, come dici tu, il framework lo fa per te.
Per distinguere tra dati persistenti e informazioni di stato, pensare a un'applicazione di editor di testo.
dati persistenti
Diciamo che l'utente ha digitato un paio di parole e poi esce l'applicazione. L'utente non ci ha detto esplicitamente di salvare quei dati in un file, ma sarebbe sicuramente bello archiviarli per quando torneranno. Si tratta di dati persistenti e si desidera archiviarli in onPause().
dati relativi allo stato
Allo stesso modo, supponiamo di avere 2 schede e una variabile che tiene traccia di scheda, che è attualmente selezionato. Si tratta di dati di stato archiviati in onSaveInstanceState().
Gray Matter
Infine immaginate di avere una classe in l'editor che tiene traccia del numero di caratteri e il numero di linee nell'editor. Si tratta di dati di stato, è possibile archiviarli in onSaveInstanceState() oppure è possibile buttarli via e ricalcolarli semplicemente quando si riavvia. Se lo si butta via potrebbe dipendere da quanto tempo occorre per calcolare, ad esempio se si può impedire una richiesta di rete memorizzando i dati, farlo.
Ulteriori pensieri
giocando con la vostra applicazione dovrebbe essere ovvio se c'è un settore in cui non siete riusciti a scoiattolo i dati subito. Assicurati di fare cose come premere il tasto home e chiudere l'app dal gestore dispositivi. Ciò ti consentirà di colpire i casi d'angolo in cui la tua app viene chiusa anziché sospesa.
Se lo stato dell'interfaccia utente è coerente tra gli eventi del ciclo di vita e i dati dell'utente rimangono, buon lavoro.
Modifica sulla base di commento
Penso che ci sono 2 pezzi di criteri qui per determinare quando/cosa salvare.
Il primo è piuttosto soggettivo. Vuoi salvare i dati? Non c'è davvero nulla che ti costringa a salvare lo stato o i dati. Il salvataggio di queste informazioni renderà l'esperienza utente migliore? Se stai scrivendo un'e-mail e stai provando a copiare/incollare il testo da un'altra app, perdere l'e-mail mezza tipata ogni volta che l'app viene chiusa sarebbe frustrante.
Il secondo pezzo, che determina cosa salvare dipende dalla possibilità di ricostruire lo stato dell'interfaccia utente in base ai dati che si hanno. Ad esempio, se hai salvato i dati di testo, ciò significa che l'utente stava modificando il testo. Così ora sappiamo di passare alla scheda di modifica del testo e inserire il testo salvato.
In generale, se si desidera che l'utente ritorni nello stesso posto in cui si era interrotto, è necessario riflettere sui dati di stato necessari per tornare a quel punto. Immaginate una versione incontaminata carico della vostra applicazione
- quali dati ha bisogno di cambiare per trasformarla in l'ultimo stato l'utente sega?
- quali dati è necessario memorizzare per tornare qui?
Questo è davvero il modo in cui funziona Android, la tua attività viene distrutta e ricreata e il tuo compito è di rimettere in moto i pezzi (se scegli di farlo).
"Ad eccezione delle modifiche alla configurazione del dispositivo" ... cosa significa? –
Questo è correlato alle modifiche al tipo di orientamento. –
@AlexLockwood La parola "Eccetto" è un collegamento a ciò che significa. L'esempio quasi noioso sono le modifiche al tipo di orientamento, ma potrebbe essere qualcos'altro? (Ad es. tastiera USB connessa, connettività Internet stabilita, ecc.) – ateiob