📊 Capítulo 14: Armazenamento com DataStore
Especialização em Mobile Nativo Android
🗺️ SharedPreferences Legado vs Jetpack DataStore
flowchart TD
subgraph OLD ["SharedPreferences Legado (Depreciado)"]
O1["Síncrono na Main Thread (Risco de ANR / Travamento da tela)"]
O2["Sem suporte a Coroutines / Flow"]
O3["Erros de parsing em runtime"]
end
subgraph NEW ["Jetpack DataStore (Recomendado pelo Google)"]
N1["100% Assíncrono com Kotlin Coroutines & Flow"]
N2["Executa no Dispatchers.IO de forma segura"]
N3["Garantia de consistência transacional ACID"]
end
style OLD fill:#ffebee,stroke:#d32f2f,stroke-width:2px
style NEW fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: Preferences DataStore (Chave-Valor Reativo)
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "configuracoes")
class PreferenciasRepository(private val context: Context) {
val temaEscuroFlow: Flow<Boolean> = context.dataStore.data.map { preferences ->
preferences[booleanPreferencesKey("dark_mode")] ?: false
}
suspend fun salvarTemaEscuro(ativo: Boolean) {
context.dataStore.edit { preferences ->
preferences[booleanPreferencesKey("dark_mode")] = ativo
}
}
}
🎯 Slide 2: Proto DataStore (Tipagem Estrita com Protocol Buffers)
- Permite armazenar objetos complexos e esquemas fortemente tipados com serialização binária ultrarrápida.
🎯 Slide 3: Armazenamento Seguro de Tokens
- Combine DataStore com o Android Keystore / EncryptedSharedPreferences para armazenar tokens JWT de autenticação com criptografia AES-256 no chip seguro do smartphone.
🔗 Navegação do Capítulo 14
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim