Páginas

segunda-feira, 25 de fevereiro de 2013

Implementando uma tela de configuração de sua aplicação (Parte1) : SharedPreferences

Durante o desenvolvimento de uma aplicação é comum surgir a necessidade de prover alguma maneira para que o usuário possa customiza-lá de acordo com sua necessidade.

Exemplo: Aplicativos que utilizem o GPS para capturar a posição do dispositivo. Como o recurso do GPS é caro (em termos de consumo de recursos do dispositivo), essas aplicações, de forma geral, possibilitam que o usuário defina o tempo de atualização da posição. Outro exemplo é o menu de mensagem do próprio Android como mostra a figura abaixo.






Em geral, esse tipo de funcionalidade é implementada como uma tela(acitivity) de configurações. Nessa série de postagens iremos abordar a melhor maneira (recomendada pela a documentação do Android) de implementarmos essa funcionalidade. Para isso vamos fazer o uso de SharedPreferences e PreferenceActivity ou PreferenceFragement.

Neste post vamos nos deter a passar algumas informações sobre SharedPrecerences, que por sua vez vai ser a base para construirmos nossa tela de configuração;

A classe SharedPreferences provê um framework para salvar e retirar informações do tipo chave valor de qualquer tipo primitivo. Os dados persistidos no SharedPreferences ser mantidos durante as várias sessões de usuário. Fonte: Documentação do Android

Você pode pensar no SharedPreferences como um hashmap que é persistido no dispositivo e que é visível apenas para sua aplicação.

Para pegar o objeto SharedPreferences da sua aplicação, você pode utilizar um dos três métodos:


  • getSharedPreferences() - Usado se for necessário utilizar vários arquivos de preferências identificados pelo nomes, que são especificados no primeiro parâmetro. 
  • getPreferences() - Usado se apenas um aquirvo é necessário. Não é necessário definir o nome do arquivo.
  • getDefaultSharedPreference() da classe PreferenceManager -  Retorna uma instância do arquivo de SharedPreference padrão utilizado pelo framework no dado contexto.

Para escrever valores:
Chame o método edit() para pegar o objeto SharedPreferences.Editor.
Adicione valores através de um dos métodos put (por exemplo, putBoolean() and putString() ).
"Comite" os novos valores usando o método commit() (fará com que os valores inseridos sejam realmente persistidos)

Analogamente, para ler os valores armazenados, use os métodos get da classe SharedPreferences (como, getBoolean() e getString()).

O exemplo a seguir, adaptado da documentação do Android, salva a preferência pelo modo silêncio ao clicar na teclas no modo calculadora:
public class Calculadora extends Activity {
    public static final String PREFS = "MeuArquivoPref";

    @Override
    protected void onCreate(Bundle state){
       super.onCreate(state);
       . . .

       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS, 0);
       boolean silencioso = settings.getBoolean("modoSilencioso", false);
       setSilencioso(silencioso);
    }

    @Override
    protected void onStop(){
       super.onStop();

      // E necessario o objeto Editor para alterar a preferencia.
      // Todos os objetos vem do android.context.Context
      SharedPreferences configuracao = getSharedPreferences(PREFS, 0);
      SharedPreferences.Editor editor = settings.edit();
      editor.putBoolean("modoSilencioso", mModoSilencioso);

      // Commite as alteracoes
      editor.commit();
    }
}


O exemplo anterior é apenas uma possível demonstração do que você pode fazer com o SharedPreferences e também é apenas um base para o nosso próximo passo que é construir uma tela de configuração. Na próxima postagem veremos como construi-lá.

Nenhum comentário:

Postar um comentário