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.

Christian Muller
fonte

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 ).

Christian Muller
fonte
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