SharedPreferences

Muitas vezes precisamos persistir dados durante o uso da aplicação, para que possam ser utilizados posteriormente, como preferências de usuário, indicação de primeira vez do uso do aplicativo, e justamente quando estes dados são consideravelmente pequenos não vale a pena criar um banco de dados, que acaba gerando um trabalho extra. Pensando nisso o Android disponibilizou uma forma de armazenamento de dados denominado SharedPreferences ou Preferências de Usuário.

As SharedPreferences são utilizadas em situações onde não há necessidade de criação de um banco de dados, ou até mesmo quando há pouco número de dados a ser armazenado. Em linhas gerais, este armazenamento pode consistir em diversos tipos de dados, imagine uma aplicação de previsão do tempo, onde o usuário pode escolher entre exibir a temperatura em Fahrenheit ou em grau Celsius, este tipo de preferência é o tipo de dado que deve ser armazenado nas preferências de usuário, pois quando a aplicação iniciar já estará na escala de temperatura escolhida, o que é bem melhor do que perguntar ao usuário a cada vez que ele entre na aplicação. Outra utilização bem comum é uma flag para saber se é a primeira vez que o usuário entra na aplicação, para exibição ou omissão de algum tutorial. Geralmente as informações referentes à configurações da aplicação também podem ser armazenadas nas SharedPreferences.

Nota: Jamais, em hipótese alguma, salve senhas de usuários nas SharedPreferences, inclusive recomenda-se que nenhum dado pessoal de usuário, como cartão de crédito, telefone, e senhas sejam armazenadas de alguma forma no aparelho. Este tipo de prática não está de acordo com boas práticas no desenvolvimento mobile e deve ser tratado de outra forma. Falaremos disso mais a frente.

Entendendo as SharedPreferences

As SharedPreferences consiste em uma interface que permite acessar e modificar dados de preferência de usuário. O valor armazenado apresenta-se sob formato chave-valor ou key-value, ou seja, cada preferência armazenada possui uma identificação ou chave e associada a ela está um valor. Ela permite armazenamento de diversos tipos de valor, como int, float, Strings, booleans e sets de Strings.

getPreferences() versus getSharedPreferences()

Existem basicamente duas formas de se trabalhar com as SharedPreferences, quando há poucas e quando há muitas preferências. Digamos que o que precisa ser salvo sejam dados dentro de uma mesma chave, como preferências de configuração da aplicação, então o método recomendado a ser escolhido é getPreferences(). Já se deverá ser salvas diversas preferências então deve-se escolher o getSharedPreferences().

Criando uma Preferência

Como dito anteriormente, a sharedPreference utiliza o conceito de chave-valor (key-value) para armazenamento de valores. Muitas vezes precisamos armazenar mais de um valor, porém que estejam correlacionados. Digamos que em uma aplicação você possua diversas chaves para serem armazenadas, algumas ligadas à categorias, outras ligadas aos tutoriais do app, outras ligadas a configurações de localização. O ideal é que se tenha uma sharedpreference para cada “categoria” de valores a serem salvos, e que dentro de cada categoria sim salve-se as preferências específicas.

Para criar uma preferência basta chamar o método getSharedPreferences – se houver múltiplas chaves – e passar os argumentos necessários, que são a chave da preferência e o modo de acesso, o qual o mais utilizado é o modo PRIVATE,  que não permite que outras aplicações acessem a preferência salva. Existem também outros modos, como MODE_ENABLE_WRITE_AHEAD_LOGGINGMODE_APPEND, que se aplicam a banco de dados e concatenação de preferências, respectivamente.

Salvando uma preferência

Em determinada situação será preciso salvar uma preferência, e neste momento utiliza-se de um Editor, uma interface que irá salvar a preferência, conforme seu tipo, e deixará armazenada. Para então salvar a preferência desejada, precisa acessar o método edit() no objeto da preferência, criado anteriormente. Depois disso deverá ser colocado a chave e o valor no tipo de preferência desejada, escolhendo entre inteiros, booleans, strings, entre outros.

Nota: Ao salvar uma preferência é preciso chamar o método apply() para que a mudança seja aplicada. 

Buscando uma preferência

Buscar uma preferência também é uma ação que poderá ser requisitada diversas vezes. Como as preferências são salvas baseadas num par chave-valor basta buscá-la informando a chave. Da mesma forma que criam-se preferências passando o modo de acesso, na hora de buscá-las ocorre a mesma coisa, e posteriormente busca-se o valor desejado, também passando a chave, veja o exemplo:

Conclusão

As SharedPreferences auxiliam o desenvolvimento de uma aplicação android, permitem um menor esforço que se teria ao utilizar banco de dados. É preciso considerar a real necessidade de utilizar uma preferência, para não sobrecarregar o arquivo sem necessidade.

Nota: todos os exemplos utilizados neste post encontram-se no seguinte link: SharedPreferences

 

 

Anúncios

2 comentários sobre “SharedPreferences

  1. Parabéns pelo post, muito bom!
    Continue com as postagens e se puder com mais frequência.
    Obrigado por compartilhar! 😀

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s