Pregunta

Estoy desarrollando una aplicación que envía información periódicamente a un servidor externo. Realizo una copia local de los datos que se envían, con fines de copia de seguridad.

¿Cuál es la mejor opción para almacenar los datos en términos de ahorro de batería ? Cada envío de datos es un objeto serializado (la clase tiene 5 campos, que incluyen una fecha, números y cadenas) de aproximadamente 5K-10K.

¿Alguna otra idea?

¿Fue útil?

Solución

No tengo idea en términos de duración de la batería directamente, pero un criterio sería ¿cuál es más fácil de administrar? Menos operaciones para administrar los datos significaría menos ciclos de CPU y, a su vez, mayor duración de la batería.

Diría que la opción SQLite es más fácil. Puede poner una columna de fecha en la tabla SQLite que almacena sus datos, lo que hace que eliminar las presentaciones antiguas que ya no necesita sea muy fácil, y todo se maneja a través de la biblioteca SQL nativa. Administrar una carga completa de archivos, o peor aún, un solo archivo, con su propio código Java sería mucho más trabajo.

Además, puede escribir datos en la base de datos y simplemente olvidarse de ellos hasta que necesite volver a leerlos. Si está almacenando datos en archivos, deberá calcular cuándo debería leer y escribir archivos en términos en Ciclo de vida de la aplicación de Android . Si está preocupado por la batería, probablemente no quiera escribir archivos con más frecuencia de la que debería y almacenar datos en la memoria caché, pero debe asegurarse de no perder ningún dato cuando su aplicación está en pausa o destruida . En mi opinión, es mucho más fácil usar una base de datos SQLite y no preocuparse por nada de esto.

Otros consejos

No creo que importe si usa SQLite o un archivo, porque el SQLite db es simplemente un archivo en el sistema (almacenado en /data/data/<your_package>/databases/). Tendrá que comprometerse con la base de datos en los momentos correctos, tanto como necesitaría guardar un archivo en el disco duro en los momentos correctos. En otras palabras, de una forma u otra puede usar la misma cantidad de escrituras en el disco duro.

Creo que lo que elijas depende más de qué tipo de datos estás guardando. Si necesita los poderes que puede otorgar una base de datos (como las consultas), entonces utilice SQLite. Sin embargo, si no necesita una base de datos, o si tiene datos que varían enormemente (y no se pueden configurar fácilmente en una base de datos relacional), entonces iría con los archivos.

Lo que puedo decir con certeza es que no debe usar la serialización para guardar un archivo, si esa es la ruta que elige. La serialización de Android es lenta, lenta, lenta y crea archivos grandes. Es mucho mejor escribir su propio formato XML o JSON por razones de rendimiento.

¿Su aplicación es multiproceso? Si tiene múltiples hilos accediendo al almacén de datos, entonces usaría SQLite. Deje que SQLite se preocupe por los problemas de bloqueo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top