SharedPreferences
Simpan data sederhana berbentuk kunci-nilai di antara sesi aplikasi menggunakan SharedPreferences. Pelajari cara menyimpan, membaca, dan menghapus preferensi.
SharedPreferences adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 6. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 6 pelajaran total.
Pilihan Penyimpanan Persisten
Android menyediakan beberapa cara untuk menyimpan data secara lokal:
- SharedPreferences — pasangan kunci-nilai sederhana (setelan, token)
- Room — basis data SQLite terstruktur (data kompleks)
- DataStore — pengganti modern yang asinkron untuk SharedPreferences
- File — I/O file mentah
SharedPreferences sangat cocok untuk setelan sederhana dan preferensi pengguna.
Apa Itu SharedPreferences?
SharedPreferences menyimpan data sebagai pasangan kunci-nilai dalam file XML di perangkat. Fitur ini mendukung:
- String
- Int / Long / Float
- Boolean
- Set<String>
Data tetap tersimpan setelah aplikasi dimulai ulang dan bertahan saat terjadi perubahan konfigurasi (rotasi).
Mendapatkan Instance SharedPreferences
Ada dua cara untuk mendapatkan objek SharedPreferences:
// 1. Named preferences (shared across activities)
val prefs = getSharedPreferences(
"MyAppPrefs", // file name
Context.MODE_PRIVATE // only your app can read it
)
// 2. Activity's default preferences
val prefs = getPreferences(Context.MODE_PRIVATE)Menulis Data
Gunakan Editor untuk menulis nilai, lalu panggil apply():
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
prefs.edit()
.putString("username", "alice")
.putInt("login_count", 5)
.putBoolean("dark_mode", true)
.apply() // async, non-blocking — preferred over commit()
// Kotlin extension (cleaner syntax):
with(prefs.edit()) {
putString("username", "alice")
apply()
}Membaca Data
Baca nilai berdasarkan kunci, dengan memberikan nilai default jika kunci tidak ada:
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
val username = prefs.getString("username", "Guest") // default: "Guest"
val count = prefs.getInt("login_count", 0) // default: 0
val darkMode = prefs.getBoolean("dark_mode", false) // default: false
println("Hello, $username! Logins: $count. Dark: $darkMode")Contoh Praktis: Pengalih Tema
Simpan dan pulihkan setelan mode gelap:
class SettingsActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingsBinding
private lateinit var prefs: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
prefs = getSharedPreferences("settings", MODE_PRIVATE)
// Restore saved state
binding.switchDarkMode.isChecked = prefs.getBoolean("dark_mode", false)
binding.switchDarkMode.setOnCheckedChangeListener { _, isChecked ->
prefs.edit().putBoolean("dark_mode", isChecked).apply()
}
}
}Menyimpan Token Login
Simpan dan periksa token autentikasi setelah aplikasi dimulai ulang:
// Save token after login
fun saveToken(token: String) {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.putString("token", token)
.apply()
}
// Check if user is logged in
fun isLoggedIn(): Boolean {
val token = getSharedPreferences("auth", MODE_PRIVATE)
.getString("token", null)
return token != null
}
// Clear on logout
fun logout() {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.remove("token")
.apply()
}Menghapus & Mengosongkan Data
Hapus kunci tertentu atau hapus semua data:
.remove("key")— menghapus satu entri.clear()— menghapus semua isi file
Selalu panggil .apply() (atau .commit() jika memerlukan konfirmasi sinkron).
SharedPreferences vs DataStore
SharedPreferences berfungsi dengan baik, tetapi memiliki keterbatasan:
- Pembacaan sinkron dapat memblokir thread utama
- Tidak memiliki keamanan tipe
Jetpack DataStore adalah pengganti modern — sepenuhnya asinkron dengan Kotlin Flow dan keamanan tipe. Untuk proyek baru, prioritaskan DataStore. SharedPreferences masih banyak digunakan dan sepenuhnya layak untuk data dalam jumlah kecil.
Pemeriksaan Singkat
Metode apa yang menyimpan data ke SharedPreferences secara asinkron tanpa memblokir thread UI?
Ringkasan: SharedPreferences
Sekarang Anda dapat mempertahankan data sederhana di antara peluncuran aplikasi:
- Dapatkan dengan
getSharedPreferences(name, MODE_PRIVATE) - Tulis:
.edit().putString(key, value).apply() - Baca:
.getString(key, defaultValue) - Hapus:
.edit().remove(key).apply() - Gunakan
apply()(asinkron), bukancommit()(sinkron)
Kursus berikutnya: Arsitektur Aplikasi — ViewModel, Room, dan Coroutines.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “SharedPreferences” gratis?
Ya — teks lengkap “SharedPreferences” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 6 pelajaran total.
Apa yang akan aku pelajari di “SharedPreferences”?
Simpan data sederhana berbentuk kunci-nilai di antara sesi aplikasi menggunakan SharedPreferences. Pelajari cara menyimpan, membaca, dan menghapus preferensi. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 6.
Berapa lama pelajaran “SharedPreferences” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Koleksi Kotlin
- Dasar RecyclerView
- Peristiwa Klik RecyclerView
- SharedPreferences
- Preferensi DataStore
- Adapter & DiffUtil