Equivalente Android de NSUserDefaults no iOS


103

Eu gostaria de salvar alguns dados simples. No iPhone, posso fazer isso NSUserDefaultsem Objective-C.

Qual é o comando semelhante aqui no Android?

Estou apenas salvando algumas variáveis, para serem reutilizadas enquanto o aplicativo estiver instalado. Não quero usar um banco de dados complicado apenas para fazer isso.

Respostas:


210

Esta é a solução mais simples que encontrei:

//--Init
int myvar = 12;


//--SAVE Data
SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);  
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("var1", myvar);
editor.commit();


//--READ data       
myvar = preferences.getInt("var1", 0);  

Onde 'contexto' é o contexto atual (por exemplo, em uma subclasse de atividade pode ser este ).


este é o caminho a percorrer para armazenar coisas muito simples, é simples e direto ao ponto
smith324

Corrigi o erro no código (estava chamando getPreferences não existente, não getSharedPreferences).
Ben Clayton

14
Atualização 2015: o Android recomenda o uso de apply () agora em vez de commit () porque apply () opera em um thread de segundo plano em vez de armazenar os dados persistentes imediatamente e possível bloquear o thread principal.
AppsIntheParkNYC

Existe uma maneira de acessar este SharedPreferences do código jni?
IgorGanapolsky

2
Para obter o 'contexto' de dentro AppCompatActivity, você pode usargetApplicationContext()
Brainware
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.