Sobes.tech
Junior

¿Qué formas de almacenamiento de datos conoces?

sobes.tech AI

Respuesta de la IA

  1. SharedPreferences: Para almacenar pares clave-valor simples (tipos primitivos). Acceso rápido, pero no adecuado para grandes volúmenes de datos.

  2. Memoria interna (Internal Storage): Sistema de archivos accesible solo para la aplicación. Los datos se eliminan al desinstalar. Adecuado para datos privados.

    // Escribir archivo
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Leer archivo
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Memoria externa (External Storage): Sistema de archivos accesible a otras aplicaciones (con permisos) y al usuario. Los datos permanecen después de desinstalar. Requiere atención a los permisos en Android 10+. Adecuado para datos no sensibles.

  4. Bases de datos SQLite: Base de datos relacional. Adecuado para datos estructurados que requieren consultas complejas. Requiere más código para implementar. Room Persistence Library es el ORM recomendado.

    -- Ejemplo de consulta SQL
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers: Proporcionan acceso estructurado a conjuntos de datos compartidos. Pueden ser creados para sus propios datos o para acceder a datos de otras aplicaciones (por ejemplo, contactos).

  6. DataStore: Solución moderna y asíncrona para almacenar datos, reemplazando SharedPreferences y parte de la funcionalidad de SQLite. Hay dos tipos: Preferences DataStore (para pares clave-valor) y Proto DataStore (para objetos tipados con Protobuf).

    // Ejemplo de Preferences DataStore
    val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
    
    suspend fun saveSetting(context: Context, key: String, value: Boolean) {
        context.dataStore.edit { settings ->
            settings[booleanPreferencesKey(key)] = value
        }
    }
    
  7. Jetpack DataStore (versiones anteriores) / DataSync / otras soluciones en la nube: Para sincronizar datos entre dispositivos del usuario y almacenar copias de seguridad. Requiere integración con servicios en la nube.

La elección del método depende del tipo de datos, su volumen, necesidad de acceso compartido, cuestiones de seguridad y requisitos de rendimiento.