He estado investigando métodos alternativos para guardar los datos de mi juego entre turnos, y me pregunto si alguien puede señalarme en la dirección correcta.El mejor método para guardar datos: preferencias, sqlite, serializable u otros?
Tengo aproximadamente 32k de datos que se deben guardar durante OnPause. Descarté las preferencias debido a la gran cantidad de datos. Pasé unos días jugando con SQLite, pero no pude obtener los datos para guardar en menos de dos segundos (aunque el tiempo ciertamente no se ha desperdiciado).
He decidido usar la base de datos para cargar datos constantes al comienzo del juego. Esto sin duda hará que sea más fácil ajustar varios parámetros y valores predeterminados en el juego. Pero esto todavía me deja buscando el método ideal para escribir datos.
Los datos que se deben guardar son básicamente nueve apariciones de clase A y nueve ocurrencias de clase B. Soy un mes intensivo en la curva de aprendizaje de Android (y los matices de Java, procedentes de un fondo C++) y he estado buscando en Google como loco. Esto trajo dos posibilidades a la mente -
1) serialización (ObjectOutputStream)
pensé que esto sería la solución perfecta, pero, después de haber leído varios otros puestos con respecto al tema, se reúnen que no es muy recomendable en el Plataforma Android debido a la velocidad y asignaciones de memoria que provocan el colector de basura en una rabia potencial.
2) Clase DataOutputStream
Mi pensamiento actual es añadir Cargar y Guardar las funciones de ambas clases y utilizar DataOutputStream y DataInputStream llamadas en ellos para escribir y leer los datos respectivamente.
Los datos en las clases son primitivos (cadenas y detalles en su mayoría) y matrices de primitivas, por lo que no hay nada demasiado complicado para descomponerse. ¿Esta segunda solución parece una buena y viable? ¿O hay otras soluciones que aún desconozco?
La consideración principal a tener en cuenta es que escribir en flash puede ser una operación larga, independientemente del tamaño de los datos. Incluso escribir 1 byte puede tomar una cantidad de tiempo notable. Por lo tanto, asegúrese de que su solución almacena temporalmente todos los datos y los escribe en la menor cantidad de operaciones posible. – Jems
Gracias por el consejo. He ido con el método DataOutputStream y el tiempo necesario para escribir los datos ahora es insignificante (aproximadamente 0.1 segundos). Sin embargo, me alegro de que me haya desviado de las bases de datos SQLite, ya que seguramente serán muy útiles :) – Rok