Junior
Que tipos de armazenamento de dados existem em aplicações Android?
sobes.tech IA
Resposta da IA
-
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.
-
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.
-
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.
-
Bases de dados SQLite:
- Base de dados relacional.
- Adequado para armazenar dados estruturados.
- Permite usar consultas SQL para manipular dados.
-
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.
-
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)