SharedPreferences no Android, Entendendo e Utilizando

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Android /SharedPreferences no Android, Entendendo e Utilizando

SharedPreferences no Android, Entendendo e Utilizando

Vinícius Thiengo19/06/2014, Quinta-feira, às 19h
(5420) (15) (51) (1)

Opa! Blz?

Nesse vídeo mostro o que é e como utilizar a entidade SharedPreferences no Android. Bem simples e muito útil quando queremos guardar dados primitivos que não sejam muito dinâmicos. O SharedPreferences é uma das opções de armazenamento de dados que o Android prove as aplicações. Note que o uso de SharedPrefenrences entre Aplicações distintas somente pode ocorrer se as aplicações tiverem o mesmo User ID que o Linux / Android cria para cada aplicação, nesse caso para ter o mesmo User ID o programador teria de fazer essa alteração na mão no AndroidManifest. Quanto as constantes de modo de acesso (MODE_MULTI_PROCESS e MODE_PRIVATE) que não estão depreciadas, MODE_PRIVATE é o padrão, que permite apenas aplicações de mesmo User ID acessar o SharedPreferences e o MODE_MULTI_PROCESS permiti o acesso em mais de um processo ao mesmo tempo, não confunda processos diferentes com aplicações diferentes nesse caso, pelos meus testes a aplicação deve ter ainda o mesmo User ID da aplicação que criou o SharedPreferences. Note que os métodos getPreferences() (de Activity) e getSharedPreferences() (de Context) apesar de terem um tipo de acesso diferente podem sim acessar os mesmos arquivos de SharedPreferences. Então é isso, vou evitar mais delongas e deixar você assistir ao vídeo.

O link para download do projeto se encontra logo abaixo no post.

Segue links das páginas apresentadas no vídeo:

Página da interface SharedPreferences no site oficial do Android

Página da interface OnSharedPreferenceChangeListener no site oficial do Android

Página da classe Context referenciando o método getSharedPreferences() no site oficial do Android

Página da classe Activity referenciando o método getPreferences() no site oficial do Android

Página das opções de gravações de dados no Android

Página da classe Context referenciando as constantes do SharedPreferences no site oficial do Android

Vlw.

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

Login do Facebook no Android com LoginButtonLogin do Facebook no Android com LoginButtonAndroid
Compartilhamento com Facebook SDK no AndroidCompartilhamento com Facebook SDK no AndroidAndroid
Compartilhamento com Facebook ShareDialog no AndroidCompartilhamento com Facebook ShareDialog no AndroidAndroid
ContentProvider no Android, Entendendo e UtilizandoContentProvider no Android, Entendendo e UtilizandoAndroid

Compartilhar

Comentários Facebook (2)

Comentários Blog (13)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Vinicius (1) (0)
19/12/2016, Segunda-feira, às 20h
Fala Thiengo!

Onde eu encontro o arquivo do SharedPreferences no Android Studio? Já rodei ele todo e não encontrei..
Responder
Vinícius Thiengo (1) (0)
20/12/2016, Terça-feira, às 16h
Vinicius, tudo bem?

Abre seu projeto no Android Studio. Execute um emulador (ou um device real). Logo depois rode sua APP no emulador.

Então, no Android Studio, vá em: Tools / Android / Android Device Monitor.

Vai abrir uma nova janela, ao lado esquerdo clique no identificador emulador que está aberto.

Então, na janela direita, clique em: data / data / package.name.de.seu.projeto / shared_prefs

E assim terá acesso ao arquivo XML do SharedPreferences criado. Abraço.
Responder
Vinicius (1) (0)
20/12/2016, Terça-feira, às 20h
Obrigado, encontrei aqui. Tomei uma surra do Android Estúdio e do SharedPreference kkkk
Perdi um tempão para encontrar o erro..
Responder
Elias Martins Ferreira (1) (0)
19/05/2015, Terça-feira, às 11h
Bom dia Thiengo, tudo bem?
queria tirar uma dúvida, estou tentando salvar um valor como  se fosse uma sessão em website, pois preciso que esse valor não se apague ao navegar entre telas, entretanto ao fazer a navegação, mesmo salvando com sharedpreferences o valor se perde, tem como  eu fazer isso no android ?
se tiver uma dica eu te agradeço, abraços.
Responder
Vinícius Thiengo (1) (0)
19/05/2015, Terça-feira, às 18h
Fala Elias, td bem sim.
Verifique se vc consegui ao menos levar os dados de "id de sessão" até o momento de salvar no SharedPreferences, pois se sim, o código do Shared deve funcionar de forma independente do WebView, logo mudar de página não o afetaria. Outra coisa que pode estar acontecendo é a lógica que vc esta utilizando estar gravando um valor vazio quando muda de página, mesmo quando a sessão já estava gravada. Verifica isso ae e depois retorne se ainda não tiver rodado corretamente. Abraço
Responder
Elias Martins (1) (0)
20/05/2015, Quarta-feira, às 10h
Bom dia Thiengo, no caso estou gravando assim
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("PrefUsuario", cod);
                    //Confirma a gravação dos dados
                    editor.commit();

e no log o valor está sendo salvo
mas para recuperar
estou fazendo dessa maneira:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        String preferenciaCod = settings.getString("PrefUsuario", "");
agora não sei o que poder ser que não salva o valor
Responder
Vinícius Thiengo (1) (0)
20/05/2015, Quarta-feira, às 10h
Elias, confirme no LogCat se tem algum valor dentro da variavel "cod", se ela realmente não é NULL ou esta vazia. Abraço
Responder
Elias Matins (1) (0)
20/05/2015, Quarta-feira, às 10h
A variável cod tem valor, está variavel, está na tela de login e quero recuperar este valor na outra activity
log cat:
tela Login preferenciaCod : 000512? cod vendedo
Responder
Elias Martins (1) (0)
20/05/2015, Quarta-feira, às 10h
blz Thiengo,  no caso o valor está sendo passado
I/tela Login preferenciaCod cod: 000512? cod vendedor
esté valor está tela de login e vou enviar para a tela de historico
Responder
Vinícius Thiengo (1) (0)
21/05/2015, Quinta-feira, às 03h
ELias, mt estranho esse comportamento do SharedPreferences, alguma coisa está passando... mas enfim, para enviar os dados para a outra Activity vc pode utilizar o Parcelable (http://www.thiengo.com.br/parcelable-no-android-entendendo-e-utilizando) ou o EventBus (http://www.thiengo.com.br/eventbus-lib-comunicacao-entre-entidades-android). Somente Intent não curto mt pois já tive problemas com o envio de Strings. Abraço
Responder
Elias Martins (1) (0)
21/05/2015, Quinta-feira, às 14h
blz Thiengo, vou ver esses videos, abraços.
Responder
Danilo Araújo (1) (0)
03/04/2015, Sexta-feira, às 20h
Olá Thiengo, obrigado pelo vídeo!

Você saber se o SharedPreferences pode ser mais rápido que o SQlite? Tanto o SharedPreferences ou o SQLite tem alguma alguma coisa de relacionado a dados ou cache das informações do aplicativo?
Grato.
Responder
Vinícius Thiengo (0) (0)
04/04/2015, Sábado, às 02h
Fala Danilo, blz?
Se não me engano não há um mais rápido, depende da quantidade de dados que vc irá trabalhar, se for precisar de guardar o valor de uma ou outra flag, o SharedPreferences tende a ser a melhor escolha, pois será mais simples. Porém se for envolver estrutura de dados a serem salvas (valores de objetos, listas, ...) o SQLite é a melhor opção. Provavelmente o SQLite com flags tb é mais rápido, porém deve ser um tempo ganho de execução irrelevante para a quantidade de objetos que serão criados e a complexidade do código que vc terá de implementar... mas ai tu testa para ver se um é visivelmente mais rápido que o outro trabalhando com os dados que sua APP precisar guardar local. Abraço
Responder