Caso tenha um conjunto relativamente pequeno de chaves-valor para salvar,
você pode usar as APIs SharedPreferences. Um objeto SharedPreferences
indica um arquivo que contém pares de chave-valor e fornece métodos simples para leitura
e gravação. Cada arquivo SharedPreferences é gerenciado pelo framework e
pode ser particular ou compartilhado.
Esta página mostra como usar as APIs SharedPreferences para armazenar
e acessar valores simples.
Processar preferências compartilhadas
É possível criar um novo arquivo de preferências compartilhadas ou acessar um existente chamando um dos seguintes métodos:
getSharedPreferences(): use esse método se precisar de vários arquivos de preferências compartilhadas identificados por nome, que são especificados com o primeiro parâmetro. É possível chamá-lo em qualquerContextno app.getPreferences(): use esse método em umaActivityse precisar usar apenas um arquivo de preferências compartilhadas para a atividade. Como ele recupera um arquivo padrão que pertence à atividade, não é necessário fornecer um nome.
Por exemplo, o código abaixo acessa o arquivo de preferências compartilhadas
identificado pela string de recurso R.string.preference_file_key e abre o arquivo usando
o modo privado para que o arquivo fique acessível somente ao app:
Kotlin
val sharedPref = activity?.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE)
Java
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE);
Ao nomear os arquivos de preferências compartilhadas, use um nome que seja claramente identificado
para o app. Uma maneira fácil de fazer isso é usar o ID do aplicativo
como prefixo do nome do arquivo. Por exemplo:
"com.example.myapp.PREFERENCE_FILE_KEY"
Como alternativa, caso precise apenas de um arquivo de preferências compartilhadas para sua atividade, use o
método getPreferences():
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
Se a API SharedPreferences for usada para salvar as configurações do app,
use getDefaultSharedPreferences() a fim de acessar o arquivo de preferências compartilhadas padrão de todo
o app. Confira mais informações no
Guia para desenvolvedores sobre configurações.
Gravar em preferências compartilhadas
Para gravar em um arquivo de preferências compartilhadas, crie um SharedPreferences.Editor,
chamando edit() nas SharedPreferences.
Transmita as chaves e os valores que você quer gravar com métodos como
putInt() e putString(). Em seguida, chame apply() ou
commit() para salvar as mudanças. Exemplos:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return with (sharedPref.edit()) { putInt(getString(R.string.saved_high_score_key), newHighScore) apply() }
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score_key), newHighScore); editor.apply();
apply() muda imediatamente o
objeto SharedPreferences na memória, mas
grava as atualizações no disco de forma assíncrona. Como alternativa, você pode usar commit()
para gravar os dados dessa forma. Contudo, como commit() é síncrono,
evite chamá-lo pela linha de execução principal, porque ele pode pausar a
renderização da interface.
Ler de preferências compartilhadas
Para extrair valores de um arquivo de preferências compartilhadas, chame métodos como
getInt() e
getString(), fornecendo a chave para o valor
que você quer extrair e, opcionalmente, um valor padrão para retorno, caso a chave não esteja
presente. Por
exemplo:
Kotlin
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key) val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)
Java
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key); int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);