page.title=Salvando conjuntos de valor-chave page.tags=armazenamento de dados helpoutsWidget=true trainingnavtop=true @jd:body

Esta lição ensina a

  1. Obter um identificador para preferências compartilhadas
  2. Gravar em preferências compartilhadas
  3. Ler de preferências compartilhadas

Leia também

Caso você tenha uma coleção relativamente pequena de valores-chave para salvar, use as APIs {@link android.content.SharedPreferences}. Um objeto {@link android.content.SharedPreferences} indica um arquivo que contém pares de valores-chave e fornece métodos simples para ler e gravar. Cada arquivo {@link android.content.SharedPreferences} é gerenciado pelo framework e pode ser privado ou compartilhado.

Essa lição mostra como usar as APIs {@link android.content.SharedPreferences} para armazenar e recuperar valores simples.

Observação: as APIs {@link android.content.SharedPreferences} são usadas apenas para leitura e gravação de pares de valores-chave e não devem ser confundidas com as APIs {@link android.preference.Preference}, que ajudam a criar uma interface do usuário para as configurações do seu aplicativo (embora usem {@link android.content.SharedPreferences} como implementação para salvar as configurações de aplicativo). Para obter mais informação sobre uso de APIs {@link android.preference.Preference}, consulte a guia Configurações.

Obter um identificador para preferências compartilhadas

É possível criar um novo arquivo de preferência compartilhada ou acessar um existente chamando um destes dois métodos:

Por exemplo, o código a seguir é executado dentro de um {@link android.app.Fragment}. Ele acessa o arquivo de preferências compartilhadas que é identificado pela cadeia de caracteres de recursos {@code R.string.preference_file_key} e o abre usando o modo privado para que o arquivo possa ser acessado apenas pelo seu aplicativo.

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

Ao nomear seus arquivos de preferência compartilhada, você deve usar um nome que seja identificável exclusivamente para o aplicativo, como {@code "com.example.myapp.PREFERENCE_FILE_KEY"}

Em alternativa, caso precise apenas de um arquivo de preferência compartilhada para sua atividade, use o método {@link android.app.Activity#getPreferences(int) getPreferences()}:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

Cuidado: se você criar um arquivo de preferência compartilhada com {@link android.content.Context#MODE_WORLD_READABLE} ou {@link android.content.Context#MODE_WORLD_WRITEABLE}, qualquer outro aplicativo que conhecer o identificador de arquivo poderá acessar seus dados.

Gravar em preferências compartilhadas

Para gravar em um arquivo de preferência compartilhada, crie um {@link android.content.SharedPreferences.Editor} chamando {@link android.content.SharedPreferences#edit} em seu {@link android.content.SharedPreferences}.

Transmita as chaves e os valores que deseja gravar com métodos como {@link android.content.SharedPreferences.Editor#putInt putInt()} e {@link android.content.SharedPreferences.Editor#putString putString()}. Chame {@link android.content.SharedPreferences.Editor#commit} para salvar as alterações. Por exemplo:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

Ler de preferências compartilhadas

Para recuperar valores de um arquivo de preferência compartilhada, chame métodos como {@link android.content.SharedPreferences#getInt getInt()} e {@link android.content.SharedPreferences#getString getString()}, fornecendo a chave para o valor desejado e opcionalmente um valor padrão para retornar caso a chave não esteja presente. Por exemplo:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);