5

So che uno Bundle può essere utilizzato per passare i dati tra le attività, nonché per il salvataggio e il ripristino dei dati in caso di modifiche alla configurazione come una rotazione dello schermo.Quanto dura un pacco?

Ho anche letto che SharedPreferences è il modo preferito per memorizzare i dati persistenti, piuttosto che uno Bundle.

Perché è esattamente così? Per fare in modo che Bundle gestisca una modifica alla configurazione, dovrebbe persistere anche dopo che un'attività è stata distrutta. Quindi, qual è esattamente la durata di un Bundle? Esiste un punto in cui viene arbitrariamente eliminato dalla raccolta dei dati inutili oppure i dati di Bundle persistono per tutto il tempo in cui non si sceglie manualmente di cancellarlo?

risposta

1

Bundle dura finché l'attività esiste, ovvero non è stata completata.

Un fatto interessante da notare è che quando si verifica processo di morte e Android massacra l'applicazione e la classe Application viene ricreata (onCreate() si chiama), quindi lo stack attività viene ricostruita, e l'attività viene reinizializzata dal saveInstanceState fascio .

Il SharedPreferences memorizza letteralmente i dati che gli vengono dati in un file XML nella cartella data/<applicationname>/preferences, se ricordo bene la posizione.

+0

Quando un'attività è considerata terminata? So che non è quando l'attività viene distrutta. Inoltre sembra che quando l'utente preme indietro per uscire da un'app, il pacchetto viene ripristinato? Quindi sarebbe corretto dire che un'attività è terminata quando l'utente esce manualmente da un'app? – ryye

+0

Un'attività è ** finita ** se si forza forzare l'app, o l'utente preme il pulsante 'Indietro', e l'implementazione dell'attività' onBackPressed() 'chiama il metodo' finish() '. Puoi accedere se un'attività sta finendo nei metodi 'onPause()', 'onStop()', 'onDestroy()' usando il metodo 'isFinishing()'. – EpicPandaForce

2

SharedPreferences sono per la memorizzazione di impostazioni persistenti semplici. Come la home page su un browser che dovrebbe essere disponibile ogni volta che l'utente apre l'app. Queste sono solo le chiavi: coppie di valori progettate per contenere cose semplici.

Bundle è un modo di memorizzare i dati per passare a un altro contesto (un'altra attività, servizio, ecc.) O per salvare e ripristinare il proprio stato corrente in stato onSaveInstanceState e onRestoreInstance. Questi dati sono NON persistenti e utilizzati mentre l'applicazione è in uso.

+1

Ma se Bundle può essere utilizzato per il ripristino durante onRestoreInstance, deve persistere dopo un'attività suDestroy, giusto? Quindi i dati non dovrebbero essere considerati persistenti? – ryye

+0

Finché l'applicazione è in esecuzione. Una volta che l'applicazione è stata distrutta, lo sono anche i dati del pacchetto. – Shahzeb

Problemi correlati