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.
- SharedPreferences:
- Armazena dados primitivos em pares chave-valor.
- SQLite Databases:
- Banco de dados relacional convencional para armazenar dados estruturados.
- Firebase:
- Solução de banco de dados noSQL na nuvem compatível com Android e iOS.
- Escrever: Métodos como
putInt,putFloat,putString, eputBooleanpara 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 é 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.
- Abstração robusta sobre o SQLite.
- Recomendado pelo Google em vez do SQLite puro.
Adicione dependências no arquivo build.gradle:
implementation "androidx.room:room-runtime:2.0.0"@Entity(tableName = "usuarios")
data class Usuario(
@PrimaryKey val id: Int,
@ColumnInfo(name = "name") val name: String?,
@ColumnInfo(name = "email") val email: String?
)@Dao
interface UsuarioDao {
@Query("SELECT * FROM usuarios WHERE id = :usuarioId")
fun getUsuario(usuarioId: String): Usuario
@Insert
fun insertAll(vararg usuarios: Usuario)
}@Database(entities = [Usuario::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun usuarioDao(): UsuarioDao
}val db = Room.databaseBuilder(
this,
AppDatabase::class.java,
"satc-demo-room"
).build()
val novoUsuario = Usuario(1, "Thyerri Mezzari", "[email protected]")
db.usuarioDao().insertAll(novoUsuario)