Android yang setara dengan NSUserDefaults di iOS

103

Saya ingin menyimpan beberapa data sederhana. Di iPhone, saya bisa melakukannya denganNSUserDefaults di Objective-C.

Apa perintah serupa di sini di Android?

Saya hanya menyimpan beberapa variabel, untuk digunakan kembali selama aplikasi diinstal. Saya tidak ingin menggunakan database yang rumit hanya untuk melakukan itu.

christian Muller
sumber

Jawaban:

210

Ini adalah solusi paling sederhana yang saya temukan:

//--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);  

Di mana 'konteks' adalah konteks saat ini (misalnya dalam subkelas kegiatan bisa jadi ini ).

christian Muller
sumber
ini adalah cara untuk menyimpan hal-hal yang sangat sederhana, sederhana dan langsung ke intinya
smith324
Saya memperbaiki kesalahan dalam kode (memanggil getPreferences yang tidak ada, bukan getSharedPreferences).
Ben Clayton
14
Pembaruan 2015: Android merekomendasikan penggunaan apply () now over commit () karena apply () beroperasi pada thread latar belakang alih-alih menyimpan data persisten dengan segera dan kemungkinan memblokir thread utama.
AppsIntheParkNYC
Apakah ada cara untuk mengakses SharedPreferences ini dari kode jni?
IgorGanapolsky
2
Untuk mendapatkan 'konteks' dari dalam AppCompatActivity, Anda dapat menggunakangetApplicationContext()
Brainware