SharedPreferences
Teori
Android menyediakan beberapa cara untuk menyimpan data pada suatu aplikasi. Salah satu cara tersebut adalah dengan memanfaatkan SharedPreferences. SharedPreferences memungkinkan Anda menyimpan dan mengambil data dalam bentuk pasangan kunci-nilai (key-value pairs). Namun dengan catatan, data yang dapat disimpan hanyalah data yang tipe datanya sederhana seperti:
- String
- int/long/float
- boolean
- DateTime
Untuk menggunakan SharedPreferences, Anda harus memanggil metode getSharedPreferences() yang sudah ada di setiap class turunan AppCompatActivity. Method tersebut akan mengembalikan instance SharedPreference yang merujuk ke file xml yang berisi nilai preferensi, yang terdapat pada penyimpanan device.
Contoh:
SharedPreferences sharedpreferences = this.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
Parameter pertama adalah nama SharedPreferences yang kita tentukan sendiri dan parameter kedua adalah MODE. Selain selain MODE_PRIVATE ada beberapa mode lain yang tersedia yaitu:
MODE_APPEND
Menumpuk/menggabungkan data yang ada di SharedPreference yang sudah ada ke SharedPreference yang baru dibuat
MODE_ENABLE_WRITE_AHEAD_LOGGING
Mengatur agar penulisan data menggunakan metode write ahead loggin, adalah sebuah metode khusus pada database. Jika ingin tahu lebih lanjut mengenai write ahead logging, silahkan pelajari materi tentang basis data lanjut dari referensi-referensi yang Anda miliki.
MODE_MULTI_PROCESS
Memungkinkan SharedPreferences diakses oleh banyak proses.
MODE_PRIVATE
Dengan mengatur mode ini, file hanya dapat diakses oleh aplikasi saat ini (yang membuat SharedPreferences itu sendiri)
MODE_WORLD_READABLE
Mode ini memungkinkan aplikasi lain dapat membaca data pada SharedPreference yang dibuat oleh aplikasi saat ini.
MODE_WORLD_WRITEABLE
Mode ini memungkinkan aplikasi lain dapat menulis data pada SharedPreference yang dibuat oleh aplikasi saat ini.
Untuk menulis/menyimpan sesuatu di SharedPreferences dilakukan dengan menggunakan kelas SharedPreferences.Editor. Kemudian dari instance class tersebut dipanggil method edit() yang akan mengembalikan objek dari class Editor. Setelah mendapatkan objek editor tersebut, dapat dipanggil mehod-method putXXX(key, value) dimana XXX adalah tipe data yang ingin ditulis. Setelah selesai menulis tipe data, harus dipanggil apply()/commit() sehingga perubahan dapat disimpan secara permanen.
Contoh sintaksisnya adalah sebagai berikut.
Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit(); // Atau editor.apply()
Pada snippet kode diatas, "key" adalah semacam index yang digunakan untuk mengambil nilai "value" yang Anda simpan. Selain putString() & commit() ada method-method lain dari class Editor yang layak untuk Anda ketahui yaitu:
apply()
Menerapkan perubahan yang telah dilakukan pada Editor sehingga menjadi permanen
clear()
Menghapus semua nilai yang ditulis pada Editor.
remove(String key)
Menghapus suatu nilai dengan key yang diberikan di parameter method.
putLong(String key, long value)
Menyimpan nilai dengan tipe data long
putInt(String key, int value)
Menyimpan nilai dengan tipe data int
putFloat(String key, float value)
Menyimpan nilai dengan tipe data float
Sedangkan untuk membaca nilai dari SharedPreferences cukup dengan sintaksis berikut:
SharedPreferences sharedPrefs = this.getSharedPreferences("shared_preferences_name", Context.MODE_PRIVATE);
String valueToRead = sharedPrefs.getString(KEY, null);
Catatan: null pada method getString() adalah nilai default yang dikembalikan jika tidak ditemukan data dengan KEY yang diminta.