Muitos aplicativos podem fornecer uma maneira de capturar as preferências do usuário nas configurações de um aplicativo ou atividade específica. Para oferecer suporte a isso, o Android fornece um conjunto simples de APIs.
As preferências são normalmente pares de valor de nome. Eles podem ser armazenados como “Preferências compartilhadas” em várias atividades em um aplicativo (observe que atualmente não podem ser compartilhados entre processos). Ou pode ser algo que precisa ser armazenado especificamente para uma atividade.
Preferências compartilhadas: As preferências compartilhadas podem ser usadas por todos os componentes (atividades, serviços, etc.) fora dos aplicativos.
Preferências de atividades gerenciadas: Essas preferências só podem ser usadas na atividade e não podem ser usadas por outros componentes do aplicativo.
Preferências Compartilhadas:
As preferências compartilhadas são gerenciadas com a ajuda do getSharedPreferences
método da Context
classe. As preferências são armazenadas em um arquivo padrão (1) ou você pode especificar um nome de arquivo (2) a ser usado para se referir às preferências.
(1) Aqui está como você obtém a instância ao especificar o nome do arquivo
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
é o modo de operação das preferências. É o modo padrão e significa que o arquivo criado será acessado apenas pelo aplicativo de chamada. Outros dois modos suportados são MODE_WORLD_READABLE
e MODE_WORLD_WRITEABLE
. Em MODE_WORLD_READABLE
outro aplicativo pode ler o arquivo criado, mas não pode modificá-lo. No caso de MODE_WORLD_WRITEABLE
outros aplicativos também tem permissão de gravação para o arquivo criado.
(2) A forma recomendada é usar o modo padrão, sem especificar o nome do arquivo
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
Finalmente, uma vez que você tenha a instância de preferências, aqui está como você pode recuperar os valores armazenados das preferências:
int storedPreference = preferences.getInt("storedInt", 0);
Para armazenar valores no arquivo de preferência, o SharedPreference.Editor
objeto deve ser usado. Editor
é a interface aninhada da SharedPreference
classe.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
O Editor também oferece suporte a métodos como remove()
e clear()
para excluir o valor de preferência do arquivo.
Preferências de atividade:
As preferências compartilhadas podem ser usadas por outros componentes do aplicativo. Mas se você não precisa compartilhar as preferências com outros componentes e deseja ter preferências de atividades privadas. Você pode fazer isso com a ajuda do getPreferences()
método da atividade. O getPreference
método usa o getSharedPreferences()
método com o nome da classe de atividade para o nome do arquivo de preferência.
A seguir está o código para obter preferências
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
O código para armazenar valores também é o mesmo que no caso de preferências compartilhadas.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Você também pode usar outros métodos, como armazenar o estado da atividade no banco de dados. Observação Android também contém um pacote chamado android.preference
. O pacote define classes para implementar a IU de preferências do aplicativo.
Para ver mais alguns exemplos, verifique a postagem sobre armazenamento de dados do Android no site de desenvolvedores.
PreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
preferences
objeto, a chamadaeditor.apply()
é recomendada,editor.commit()
pois a primeira irá lidar com o salvamento em segundo plano.