Sobes.tech
Junior

Que tipos de armazenamento de dados existem em aplicações Android?

sobes.tech IA

Resposta da IA

  1. Armazenamento interno:

    • Disponível apenas para o aplicativo que criou o ficheiro.
    • Os ficheiros são eliminados ao eliminar o aplicativo.
    • Adequado para armazenar dados confidenciais do aplicativo.
  2. Armazenamento externo:

    • Disponível para todas as aplicações (após solicitar permissões).
    • Os ficheiros permanecem mesmo após eliminar o aplicativo.
    • Adequado para armazenar dados partilhados, como fotografias ou música.
  3. Preferências partilhadas:

    • Armazena pequenos volumes de dados em formato chave-valor.
    • Utilizado para guardar configurações do aplicativo ou preferências do utilizador.
    • Os dados são armazenados num ficheiro XML.
  4. Bases de dados SQLite:

    • Base de dados relacional.
    • Adequado para armazenar dados estruturados.
    • Permite usar consultas SQL para manipular dados.
  5. Provedores de conteúdo:

    • Oferecem uma interface padronizada para aceder a dados entre aplicações.
    • Utilizados para trocar dados, como contactos ou calendário.
    • Podem ser utilizados para aceder a dados próprios da aplicação a partir de outros componentes.
  6. Jetpack DataStore:

    • Substitui as Preferências Partilhadas.
    • Fornece uma API assíncrona para armazenar dados.
    • Suporta tipagem de dados e tratamento de erros.

Aqui está um exemplo de uso de Preferências Partilhadas:

// Obter o objeto SharedPreferences
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Guardar valor
    putBoolean("is_first_run", false)
    apply() // Aplicar alterações de forma assíncrona
}

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

Aqui está um exemplo de uso de SQLite:

// Criação da base de dados e tabela
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 de atualização da base de dados
    }
}

// Inserção de dados
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

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

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