2013-03-25 17 views
20

so domanda simile a questo è stato chiesto un numerose volte, e la navigazione attraverso così ho parzialmente trovato una risposta, ma non completa, e documenti Android in realtà non aiutano. Ovviamente so come funzionano e ho usato le preferenze condivise molte volte in passato, ma mi chiedo a che punto (quante) sia troppo, ho letto che le persone hanno memorizzato ~ 100KBS senza alcun problema. Per farla breve - Qualcuno ha effettivamente avuto problemi con troppi dati memorizzati nelle preferenze condivise e qual'era problema, i dati vengono cancellati o?preferenze condivise "limite"

** questo è solo una domanda per curiosità, ho già i miei grandi valori memorizzati in SQL DB, chiedevo che cosa sarebbe e se non ci sarebbe alcun problema se qualcuno per qualche motivo conservato tutto nelle preferenze condivise

+0

So a cosa servono e quando, mi chiedo solo quali problemi possono causare se usati troppi. –

+1

SharedPreferences sono principalmente utilizzati per memorizzare alcuni tipi di dati primitivi e non penso che ci sia un limite. Se si vuole veramente sapere che devi cercare "massimo di applicazione Android quantità di dati memorizzati", dubito troverete una risposta intorno SharedPreferences – Droidman

+0

grazie Maver1ck, ricerca malato su richiesta Android massimo memorizzato quantità di dati –

risposta

35

Dal SharedPreferences sono memorizzati in un file XML, e manca quindi il forte supporto delle transazioni di SQLite, io non consiglierei la memorizzazione "100KBS" in SharedPreferences.

Detto questo, il limite di dimensioni più basso di cui sono a conoscenza sarà la quantità di spazio libero disponibile, poiché SharedPreferences legge tutto il contenuto del file XML in memoria.

+7

Buono a sapersi sulla dimensione dell'heap. Tuttavia, non credo di aver mai avuto i file xml così grandi. chiedo perché sono xml in primo luogo e non i file binari (o json). –

+0

Hey #CommonsWare! Intendi memorizzare una stringa di dimensioni intorno ai 100kb non è una buona idea? –

8

Dalla lettura della tua domanda penserei che non dovresti usare SharedPreferences, perché (a) sono pensati per memorizzare quantità di dati molto minori (da qui l'uso di XML), e (b) ci sono molte semplici alternative .

L'unica cosa "speciale" di SharedPreferences è l'integrazione con l'attività Preferenze per mostrare le preferenze all'utente e probabilmente non è applicabile nel tuo caso in base all'importo che si intende memorizzare. (Oh, anche le maniglie SharePreferences problemi di concorrenza per voi.)

si potrebbe usare la serializzazione di Java per memorizzare preferenza (s) in file binari. Questi sarebbero drasticamente più piccoli di PreferenceFile comparabile e possono essere facilmente passati attraverso GZIPInputStream per renderlo più piccolo (o CipherInputStream) per crittografarlo. Ho trovato questo alternativo come un modo potente, semplice e multipiattaforma per archiviare i dati delle app in cui la potenza di SQLite non è necessaria.

(Spiacente, questo non è una risposta diretta.)

8

C'è una limitazione di dati SharedPreference. Nel mio caso genera un'eccezione di memoria quando i dati SharedPreference superano 1428.51-kb.

Quindi è meglio utilizzare database SQLite quando avete richiesto i dati enormi per memorizzare.

+0

falsa dichiarazione. si prega di interrompere la copia e incolla che in tutte le domande, questo è stato dimostrato errato e impreciso – SolidSnake

Problemi correlati