Skip to content

hqnicolas/ExercicioPersistAndroidStudio

Repository files navigation

Android: Persistência de Dados, Preferences e SQLite + Room Persistence Library

Persistência de Dados

Conceitualizando Persistência de Dados

Além da interatividade que um aplicativo Android nativo deve fornecer ao usuário, em muitas situações alguns dados precisam "durar" além do uso atual do app. Como exemplo:

  • Lista de preferências do usuário
  • Configuração salva
  • Registros do usuário logado

Persistência de dados: garantir que informações permaneçam após o encerramento da aplicação.

Principais Formas de Persistência no Android

  1. SharedPreferences:
    • Armazena dados primitivos em pares chave-valor.
  2. SQLite Databases:
    • Banco de dados relacional convencional para armazenar dados estruturados.
  3. Firebase:
    • Solução de banco de dados noSQL na nuvem compatível com Android e iOS.

SharedPreferences

Funções Principais

  • Escrever: Métodos como putInt, putFloat, putString, e putBoolean para salvar valores.
  • Ler: Funções getInt, getFloat, getString, etc., para recuperar valores salvos.
val sharedPref = activity?.getSharedPreferences("com.example.preferences", Context.MODE_PRIVATE) ?: return
with(sharedPref.edit()) {
    putInt("IDADE_USUARIO", 33)
    commit()
}

SQLite

Introdução

SQLite é uma biblioteca leve e autocontida que implementa um banco de dados relacional. Ideal para simplicidade em administração e manutenção, sendo solução nativa de dados para Android.

Room Persistence Library

Vantagens

  • Abstração robusta sobre o SQLite.
  • Recomendado pelo Google em vez do SQLite puro.

Configuração Inicial

Adicione dependências no arquivo build.gradle:

implementation "androidx.room:room-runtime:2.0.0"

Exemplo: Room

Entidade

@Entity(tableName = "usuarios")
data class Usuario(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "name") val name: String?,
    @ColumnInfo(name = "email") val email: String?
)

DAO

@Dao
interface UsuarioDao {
    @Query("SELECT * FROM usuarios WHERE id = :usuarioId")
    fun getUsuario(usuarioId: String): Usuario

    @Insert
    fun insertAll(vararg usuarios: Usuario)
}

Banco de Dados

@Database(entities = [Usuario::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun usuarioDao(): UsuarioDao
}

Acessando o Banco

val db = Room.databaseBuilder(
    this,
    AppDatabase::class.java,
    "satc-demo-room"
).build()

val novoUsuario = Usuario(1, "Thyerri Mezzari", "[email protected]")
db.usuarioDao().insertAll(novoUsuario)

Links Úteis


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages