Preferencias compartidas “límite”

Sé que una pregunta similar a esta ha sido hecha en numerosas ocasiones, y navegando a través de SO, encontré parcialmente una respuesta, pero no completa, y los documentos de Android realmente no me ayudan. Obviamente, sé cómo funcionan y he usado las preferencias compartidas muchas veces, pero me pregunto en qué punto (cuántos) es demasiado, he leído que las personas tenían ~ 100 Kb almacenadas sin ningún problema. Para resumir: ¿Alguien realmente tuvo problemas con demasiados datos almacenados en preferencias compartidas y qué problema hubo, se borraron 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 almacenara por alguna razón todo en las preferencias compartidas

Dado que las SharedPreferences se almacenan en un archivo XML y, por lo tanto, carecen del fuerte soporte de transacción de SQLite, no recomendaría almacenar “100 Kb” en SharedPreferences .

Dicho esto, el límite de tamaño más bajo que conozco será su cantidad de espacio libre en el montón, ya que SharedPreferences lee los contenidos de todo el archivo XML en la memoria.

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

Lo único “especial” de las Preferencias Compartidas 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. (Ah, también SharePreferences maneja problemas de concurrencia para usted).

Puede usar la serialización de Java para almacenar clase (s) de preferencia en archivos binarios. Estos serían dramáticamente más pequeños que el archivo de preferencias comparable y se pueden pasar fácilmente a través de GZIPInputStream para hacerlo más pequeño (o CipherInputStream) para encriptarlo. He encontrado que esta alternativa es una forma poderosa, simple y multiplataforma para almacenar datos de aplicaciones donde no se necesita el poder de SQLite.

(Perdón, esta no es una respuesta directa).

Hay una limitación de los datos de SharedPreference. En mi caso arroja una Excepción de Memoria cuando los datos de SharedPreference cruzan 1428.51-kb.

Por lo tanto, es mejor usar la base de datos SQLite cuando requirió grandes cantidades de datos para almacenar.