Olá pessoal,
Muitas vezes quando estamos desenvolvendo nossos aplicativos aparece a necessidade de persistir dados para utilizar posteriormente. Mas nem sempre queremos criar um banco de dados local ou enviar os dados para um servidor. Um exemplo clássico é quando o usuário faz o login no app e após fechar e abrir posteriormente, não necessite digitar os dados de acesso novamente.
No preferences do Android você pode armazenar dados primitivos no formato chave => valor. Os tipos permitidos são boolean, float, int, long e String.
Basicamente, você recupera a instância do SharedPreferences, cria um nome para o conjunto de dados, seta os atributos e valores e salva. Para ler é basicamente o mesmo processo: recupera a instância com o nome do arquivo especificado e busca o campo desejado. Segue o exemplo usado em uma Activity:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Recupera a instância do preferences SharedPreferences preferences = getSharedPreferences("my_prefs_data", MODE_PRIVATE); // Para gravar os dados, pegar a instância do editor SharedPreferences.Editor editor = preferences.edit(); // Seta a chave e o valor editor.putString("campoString", "minhaString"); editor.putBoolean("campoBoolean", true); // Persiste os dados // Obs: Se esquecer de chamar o commit, os dados não serão persistidos editor.commit(); |
Para recuperar um valor não é necessário o editor. Ex:
|
1 2 3 4 5 6 7 |
// Recupera a instância do preferences SharedPreferences preferences = getSharedPreferences("my_prefs_data", MODE_PRIVATE); // Recupera o valor // Obs.: O segundo parâmetro é um valor padrão caso o campo não exista String campoString = preferences.getString("campoString", ""); boolean campoBoolean = preferences.getInt("campoBoolean", false); |
Quando setar um valor para um campo que já existe os dados serão atualizados. Você pode validar se um campo já existe através do método
|
1 |
preferences.contains("nomeDaCampo"). |
Caso esteja em uma classe que não seja uma Activity, pode ser utilizado o Context para recuperar instância. Ex:
|
1 |
SharedPreferences preferences = context.getSharedPreferences("my_prefs_data", MODE_PRIVATE); |
Para mais informações acesse o link da documentação: https://developer.android.com/reference/android/content/SharedPreferences.