0Pricing
Android Academy · Aula

SharedPreferences

Persista dados simples de chave e valor entre sessões do aplicativo usando SharedPreferences. Aprenda a salvar, ler e remover preferências.

SharedPreferences é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 4 de 6. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 6 aulas no total.

Opções de armazenamento persistente

O Android oferece várias formas de armazenar dados localmente:

  • SharedPreferences — pares simples de chave e valor (configurações, tokens)
  • Room — banco de dados SQLite estruturado (dados complexos)
  • DataStore — substituto assíncrono moderno para SharedPreferences
  • Arquivos — entrada e saída de arquivos brutos

SharedPreferences é ideal para configurações simples e preferências do usuário.

O que é SharedPreferences?

SharedPreferences armazena dados como pares de chave e valor em um arquivo XML no dispositivo. Ele é compatível com:

  • String
  • Int / Long / Float
  • Boolean
  • Set<String>

Os dados persistem entre reinicializações do app e sobrevivem a alterações de configuração (rotação).

Obtendo uma instância de SharedPreferences

Há duas formas de obter um objeto SharedPreferences:

// 1. Named preferences (shared across activities)
val prefs = getSharedPreferences(
    "MyAppPrefs",    // file name
    Context.MODE_PRIVATE  // only your app can read it
)

// 2. Activity's default preferences
val prefs = getPreferences(Context.MODE_PRIVATE)

Gravando dados

Use um Editor para gravar valores e depois chame apply():

val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)

prefs.edit()
    .putString("username", "alice")
    .putInt("login_count", 5)
    .putBoolean("dark_mode", true)
    .apply()  // async, non-blocking — preferred over commit()

// Kotlin extension (cleaner syntax):
with(prefs.edit()) {
    putString("username", "alice")
    apply()
}

Lendo dados

Leia os valores pela chave, fornecendo um valor padrão caso a chave não exista:

val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)

val username = prefs.getString("username", "Guest")  // default: "Guest"
val count = prefs.getInt("login_count", 0)            // default: 0
val darkMode = prefs.getBoolean("dark_mode", false)   // default: false

println("Hello, $username! Logins: $count. Dark: $darkMode")

Exemplo prático: alternância de tema

Salve e restaure uma configuração de modo escuro:

class SettingsActivity : AppCompatActivity() {

    private lateinit var binding: ActivitySettingsBinding
    private lateinit var prefs: SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySettingsBinding.inflate(layoutInflater)
        setContentView(binding.root)

        prefs = getSharedPreferences("settings", MODE_PRIVATE)

        // Restore saved state
        binding.switchDarkMode.isChecked = prefs.getBoolean("dark_mode", false)

        binding.switchDarkMode.setOnCheckedChangeListener { _, isChecked ->
            prefs.edit().putBoolean("dark_mode", isChecked).apply()
        }
    }
}

Salvando um token de login

Armazene e verifique um token de autenticação entre reinicializações do app:

// Save token after login
fun saveToken(token: String) {
    getSharedPreferences("auth", MODE_PRIVATE)
        .edit()
        .putString("token", token)
        .apply()
}

// Check if user is logged in
fun isLoggedIn(): Boolean {
    val token = getSharedPreferences("auth", MODE_PRIVATE)
        .getString("token", null)
    return token != null
}

// Clear on logout
fun logout() {
    getSharedPreferences("auth", MODE_PRIVATE)
        .edit()
        .remove("token")
        .apply()
}

Removendo e limpando dados

Remova chaves específicas ou apague todos os dados:

  • .remove("key") — exclui uma entrada
  • .clear() — exclui tudo do arquivo

Sempre chame .apply() (ou .commit() se precisar de confirmação síncrona).

SharedPreferences vs DataStore

SharedPreferences funciona bem, mas tem limitações:

  • Leituras síncronas podem bloquear a thread principal
  • Não oferece segurança de tipos

Jetpack DataStore é o substituto moderno — totalmente assíncrono, com Kotlin Flow e segurança de tipos. Em projetos novos, prefira DataStore. SharedPreferences ainda é amplamente usado e perfeitamente adequado para pequenas quantidades de dados.

Verificação rápida

Qual método salva dados no SharedPreferences de forma assíncrona, sem bloquear a thread da interface?

Recapitulação: SharedPreferences

Agora você pode manter dados simples entre as inicializações do app:

  • Obtenha com getSharedPreferences(name, MODE_PRIVATE)
  • Grave: .edit().putString(key, value).apply()
  • Leia: .getString(key, defaultValue)
  • Remova: .edit().remove(key).apply()
  • Prefira apply() (assíncrono) a commit() (síncrono)

Próximo curso: arquitetura de apps — ViewModel, Room e Coroutines.

Perguntas Frequentes

A aula “SharedPreferences” é grátis?

Sim — o texto completo de “SharedPreferences” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 6 aulas no total.

O que vou aprender em “SharedPreferences”?

Persista dados simples de chave e valor entre sessões do aplicativo usando SharedPreferences. Aprenda a salvar, ler e remover preferências. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Android Academy?

Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 6.

Quanto tempo leva a aula “SharedPreferences”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Android Academy?

Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Coleções do Kotlin
  2. Noções Básicas de RecyclerView
  3. Eventos de clique do RecyclerView
  4. SharedPreferences
  5. Preferências do DataStore
  6. Adaptadores e DiffUtil
← Voltar para Android Academy