Sobes.tech
Junior

¿Qué tipos de almacenamiento de datos existen en las aplicaciones de Android?

sobes.tech AI

Respuesta de la IA

  1. Almacenamiento interno:

    • Solo accesible para la aplicación que creó el archivo.
    • Los archivos se eliminan al eliminar la aplicación.
    • Adecuado para almacenar datos confidenciales de la aplicación.
  2. Almacenamiento externo:

    • Disponible para todas las aplicaciones (después de solicitar permisos).
    • Los archivos permanecen incluso después de eliminar la aplicación.
    • Adecuado para almacenar datos compartidos, como fotos o música.
  3. Preferencias compartidas:

    • Almacena pequeños volúmenes de datos en formato clave-valor.
    • Se usa para guardar configuraciones de la aplicación o preferencias del usuario.
    • Los datos se almacenan en un archivo XML.
  4. Bases de datos SQLite:

    • Base de datos relacional.
    • Adecuado para almacenar datos estructurados.
    • Permite usar consultas SQL para manipular datos.
  5. Proveedores de contenido:

    • Ofrecen una interfaz estandarizada para acceder a datos entre aplicaciones.
    • Se usan para intercambiar datos, como contactos o calendario.
    • Pueden ser utilizados para acceder a datos propios de la aplicación desde otros componentes.
  6. Jetpack DataStore:

    • Es una alternativa a las preferencias compartidas.
    • Proporciona una API asincrónica para almacenar datos.
    • Soporta tipificación de datos y manejo de errores.

Aquí hay un ejemplo de uso de preferencias compartidas:

// Obtenemos el objeto SharedPreferences
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Guardamos un valor
    putBoolean("is_first_run", false)
    apply() // Aplicamos los cambios de forma asincrónica
}

// Leemos el valor
val isFirstRun = sharedPref.getBoolean("is_first_run", true)

Aquí hay un ejemplo de uso de SQLite:

// Creación de la base de datos y tabla
class DBHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {

    companion object {
        const val DATABASE_VERSION = 1
        const val DATABASE_NAME = "MyDatabase.db"
        const val TABLE_NAME = "my_table"
        const val COLUMN_ID = "_id"
        const val COLUMN_NAME = "name"
    }

    override fun onCreate(db: SQLiteDatabase) {
        val createTable = "CREATE TABLE $TABLE_NAME (" +
                "$COLUMN_ID INTEGER PRIMARY KEY," +
                "$COLUMN_NAME TEXT)"
        db.execSQL(createTable)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // Lógica para actualizar la base de datos
    }
}

// Inserción de datos
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

val values = ContentValues().apply {
    put(DBHelper.COLUMN_NAME, "Ejemplo de nombre")
}

val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)