Desarrollé un juego en Android. Actualmente estoy guardando la mayoría de las estadísticas del juego en una base de datos. Sin embargo, la aplicación no utiliza más de una sola fila en el DB. Ahora estoy interesado en presentar algunas estadísticas nuevas, pero esto hará que mi DB se vuelva a instalar y así se despeje el progreso de todos. Para evitar esto en el futuro, estoy considerando almacenar las estadísticas del juego con SharedPreferences. Mi pregunta es cuántas cosas diferentes se pueden almacenar de esa manera antes de que se convierta en un problema. En total estaría almacenando alrededor de 40 valores, todos enteros.Limitaciones de Android SharedPreferences?
Respuesta
Las Preferencias Compartidas se escriben en archivos xml, por lo que el tamaño máximo de un archivo en Android es el tamaño que puede tener un archivo xml de Preferencias Compartidas. Puedo decir con seguridad que 40 valores enteros no serán un problema.
El tamaño máximo de un valor en un archivo SharedPreferences está limitado al tamaño máximo del valor que está intentando almacenar. (Lo que significa que no puede poner un valor String que sea más largo que Strings en Java.)
Lo único que le sugiero es asegurarse de procesar las ediciones tanto como sea posible (es decir, no haga .commit()
cada cambio)) y tampoco crear un nuevo editor para cada cambio. (Estos son sólo buenas prácticas.)
SharedPreferences settings = getSharedPreferences(PREFS_FILE_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("firstValue", mFirst);
editor.putInt("secondValue", mSecond);
editor.putInt("thirdValue", mThird);
// Commit the edits! (As infrequently as possible)
editor.commit();
"más largo que las cadenas pueden estar en Java" - Las cadenas pueden tener 2^31 - 1 = 2 mil millones de caracteres. Bueno, eso puede depender del almacenamiento interno del teléfono entonces. –
No sé acerca de las limitaciones, pero con respecto a su problema con el progreso everyones siendo aniquilado. Puede anular el método onUpgrade en su clase SQLite y luego migrar los datos de everyones a la base de datos más nueva.
Exactamente. Vea los ejemplos del bloc de notas: puede usar ALTER TABLE para agregar nuevas columnas. O podrías agregar una tabla completamente nueva. Podrías cambiar a las Preferencias Compartidas, pero dado que ya elegiste un enfoque de base de datos, también puedes seguir con esto. – EboMike
Creo que voy a probar el modelo de SharedPreferences y ver cuál me gusta más. Sin embargo, mantendré el DB porque en algún momento planeo permitir varios juegos guardados. Gracias por el consejo sobre Alter Table, me ayudará a migrar a SharedPreferences y a guardar el progreso de todos. – Tim
- 1. android sharedpreferences establecer valor
- 2. Android: ¿Ver archivo SharedPreferences?
- 3. Android: Copiar/Duplicar SharedPreferences
- 4. Android SharedPreferences en Fragment
- 5. NullPointerException en SharedPreferences Android
- 6. Android NDK limitaciones?
- 7. android - sharedpreferences return value nulo
- 8. ¿Qué es SharedPreferences en Android?
- 9. Android SharedPreferences Copia de seguridad no funciona
- 10. Android: uso de SharedPreferences en una biblioteca
- 11. Android - SharedPreferences con el objeto serializable
- 12. ¿Cómo elimino SharedPreferences desde fuera de una aplicación de Android?
- 13. Archivo SharedPreferences
- 14. cifrar datos en SharedPreferences
- 15. android-maven-plugin: método de implementación que no elimina SharedPreferences
- 16. ¿Se pueden compartir SharedPreferences entre diferentes aplicaciones de Android?
- 17. SharedPreferences de diferente actividad
- 18. SharedPreferences a veces se eliminan
- 19. Android - ¿Cómo usar las SharedPreferences en la clase no activa?
- 20. Android: ¿Cómo reiniciar FirstRun SharedPreferences cuando mi aplicación se actualiza?
- 21. hay limitaciones en el uso de "/ proc/mounts" en android
- 22. ¿Cuáles son las limitaciones de Python en Android?
- 23. Limitaciones de almacenamiento Web SQL en Chrome y Android?
- 24. SharedPreferences no se actualiza
- 25. ¿Contexto de aplicación para SharedPreferences?
- 26. Matriz de cadenas en SharedPreferences
- 27. obtener SharedPreferences de un servicio
- 28. Limitaciones de Shader
- 29. de coma flotante Limitaciones
- 30. Limitaciones de expresiones regulares?
40 enteros están muy bien para el almacenamiento en los SharedPreferences –