8. Persistência de Dados
8.1. Como usar SharedPreferences
Neste seção vamos ilustrar como utilizar SharedPreferences no seu aplicativo.
Acesso as preferências compartilhadas
Um objeto SharedPreferences representa um arquivo que contém pares de chave-valor e oferece métodos simples para leitura e gravação de dados. Cada arquivo SharedPreferences é gerenciado pelo framework do Android e pode ser de acesso exclusivo ao aplicativo ou compartilhado.
Você pode acessar um arquivo de preferências de duas maneiras: criando um novo arquivo de preferências ou acessando um existente, utilizando um dos seguintes métodos:
- getSharedPreferences(): Use este método quando precisar de múltiplos arquivos de preferências identificados por nome. O nome do arquivo é especificado como o primeiro parâmetro e o método pode ser chamado em qualquer Context do aplicativo.
- getPreferences(): Este método é usado em uma Activity quando há necessidade de apenas um arquivo de preferências para aquela atividade. Ele recupera um arquivo padrão vinculado à Activity, portanto, não é necessário fornecer um nome.
Por exemplo, o código abaixo acessa o arquivo de preferências compartilhadas identificado pela chave de recurso R.string.preference_file_key e o abre no modo privado, garantindo que o arquivo seja acessível somente pelo aplicativo:
val sharedPref = getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE)
Essa primeira abordagem é útil caso seja necessário criar mais de um arquivo para seu aplicativo. Caso contrário, você pode usar a outra alternativa e criar apenas um arquivo de preferências compartilhadas com método getPreferences():
val sharedPref = getPreferences(Context.MODE_PRIVATE)
Salvar dados
Para salvar dados, usamos uma espécie de editor provido pelo arquivo de preferências. Através dele podemos salvar valores com métodos put____ de acordo com o tipo adequado. Os dados são salvos como um conjunto de chave/valor. Por fim, devemos usar o método apply para aplicar as mudanças desejadas no arquivo de preferências.
// Obtém o SharedPreferences
val sharedPreferences = getSharedPreferences("AppPrefs", MODE_PRIVATE)
// Abre o editor para salvar
val editor = sharedPreferences.edit()
// Armazena os dados com chave e valor
editor.putString("username", "JohnDoe")
editor.putInt("age", 25)
// Confirma a gravação dos dados
editor.apply()
Recuperar dados
A leitura dos dados é realizada com os métodos get____ dependendo do tipo adequado. Os dados são lidos de acordo com a chave informada. É necessário passar como parâmetro também um valor padrão, caso nenhum valor seja encontrado o método get retornará o valor padrão.
// Obtém o SharedPreferences
val sharedPreferences = getSharedPreferences("AppPrefs", MODE_PRIVATE)
// Recupera os dados usando a chave
val username = sharedPreferences.getString("username", "Guest")
val age = sharedPreferences.getInt("age", 0)
Remover dados
É possível também remover dados do arquivo preferências. Para tanto, usamos o nome da chave junto com o método remove. Por fim, devemos chamar o método apply para aplicar as mudanças ao arquivos.
// Obtém o SharedPreferences
val sharedPreferences = getSharedPreferences("AppPrefs", MODE_PRIVATE)
// Abre o editor para remover o valor
val editor = sharedPreferences.edit()
editor.remove("username")
// Confirma a remoção
editor.apply()