0Pricing
Android Academy · Pelajaran

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), bukan commit() (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

  1. Koleksi Kotlin
  2. Dasar RecyclerView
  3. Peristiwa Klik RecyclerView
  4. SharedPreferences
  5. Preferensi DataStore
  6. Adapter & DiffUtil
← Kembali ke Android Academy