2011-01-26 9 views
9

Ho notato che le preferenze condivise della mia app vengono completamente ripristinate se l'app viene chiusa forzatamente o viene uccisa dal sistema per qualche motivo. Ovviamente, sì, dovrei evitare di avere un incidente in primo luogo, ma succede. Se succede, l'utente non deve perdere tutte le sue impostazioni e altri dati memorizzati con le Preferenze.Le preferenze condivise vengono reimpostate quando l'app viene chiusa forzatamente o si blocca

Ho trovato this thread on Google Groups ma non hanno potuto risolverlo.

Qualcuno ha qualche idea del perché o del modo in cui ciò accade e se c'è un modo per prevenirlo?

Inoltre, fyi ho visto questo su un 2.1 e un dispositivo 2.2. Accadrà su ogni incidente, non solo su alcuni di essi.

Grazie

+1

Sei impegnato dopo aver modificato le tue preferenze? – Falmarri

+0

Sì. Persistono bene attraverso i normali cicli di vita e persino chiudendo l'app con un task manager. Sembra resettare solo su una chiusura/chiusura forzata. – cottonBallPaws

risposta

9

Dopo un po 'scavare intorno alla fine ho scoperto la fonte del problema. Attraverso un errore nel mio codice, una preferenza per le stringhe veniva salvata con una chiave nulla. Quindi, dopo il crash, quando è andato a caricare le Preferenze, c'era un vuoto nel file delle preferenze xml che ha causato il crash delle preferenze e il reset. Per qualche motivo non ho ottenuto la traccia dello stack del crash delle preferenze, solo la causa immediata del crash iniziale.

Giusto per aggiungere qualche dettaglio in più nel caso in cui qualcun altro ha un problema simile in futuro:

Il file XML che contiene le preferenze rimasti intatti fino al attraverso la forza pulsante di chiusura stampa. Al successivo accesso alle preferenze condivise, tuttavia, il file xml è stato cancellato e riavviato.

+1

Grazie per il follow-up. Anch'io sono stato morso da questo. Non è facile da rilevare fino a quando questo non mi ha spinto a cercare una chiave nulla che ho lasciato in qualche modo. – mmeyer

+0

@littleFluffykitty: i dati sqlite vengono cancellati anche dalla forza chiusa? – Ashwin

+0

Ho avuto lo stesso tipo di problema. E file usati per la memorizzazione dei dati. Non cancella/cancella quando si verifica un arresto anomalo dell'app. Inoltre, ho caricato il sharedpref in Application onCreate dopo aver letto da questo file. – jrhamza