studio programacion herramientas fundamentos con avanzado aplicaciones android sharedpreferences

android - programacion - Preferencias compartidas "límite"



manual de android en pdf (3)

Sé que una pregunta similar a esta ha sido formulada varias veces, y al navegar SO, parcialmente encontré una respuesta, pero no completa, y los documentos de Android realmente no ayudan. Obviamente, sé cómo funcionan y he usado preferencias compartidas muchas veces antes, pero me pregunto en qué punto (cuántos) es demasiado, he leído que las personas tenían ~ 100KBS almacenados sin ningún problema. Larga historia corta: ¿Alguien realmente tuvo problemas con demasiados datos almacenados en preferencias compartidas y cuál fue el problema, se eliminan los datos o?

** Esta es solo una pregunta por curiosidad, ya tengo mis grandes valores almacenados en SQL DB, solo me preguntaba qué sería y si habría algún problema si alguien, por alguna razón, almacenara todo en preferencias compartidas.


Al leer su pregunta, creo que no debería usar SharedPreferences, porque (a) están diseñadas para almacenar cantidades mucho más pequeñas de datos (de ahí el uso de XML), y (b) hay muchas alternativas simples.

Lo único ''especial'' sobre SharedPreferences es la integración con la Actividad de Preferencias para mostrar sus preferencias al usuario, y eso probablemente no sea aplicable en su caso en función de la cantidad que planea almacenar. (Oh, también el SharePreferences maneja los problemas de concurrencia para usted).

Podría usar la serialización de Java para almacenar las clases de preferencias en archivos binarios. Estos serían mucho más pequeños que los PreferenceFile comparables y se pueden pasar fácilmente a través de GZIPInputStream para hacerlo más pequeño (o CipherInputStream) para cifrarlo. Descubrí que esta alternativa es una forma potente, simple y multiplataforma para almacenar datos de aplicaciones donde no se necesita el poder de SQLite.

(Lo siento, no es una respuesta directa.)


Hay una limitación de los datos de SharedPreference. En mi caso, lanza una excepción de memoria cuando los datos de SharedPreference atraviesan 1428.51-kb.

Por lo tanto, es mejor usar la base de datos SQLite cuando se requieren grandes datos para almacenar.


Dado que las SharedPreferences se almacenan en un archivo XML y, por lo tanto, carece del soporte de transacciones sólidas de SQLite, no recomendaría almacenar "100KBS" en SharedPreferences .

Dicho esto, el límite de tamaño más bajo que conozco será la cantidad de espacio de SharedPreferences , ya que SharedPreferences lee el contenido de todo el archivo XML en la memoria.