SharedPreferences ile basit verileri kaydedin

Kaydetmek istediğiniz nispeten küçük bir anahtar/değer çifti koleksiyonunuz varsa SharedPreferences API'lerini kullanabilirsiniz. SharedPreferences nesnesi, anahtar/değer çiftleri içeren bir dosyayı işaret eder ve bu çiftleri okumak ve yazmak için basit yöntemler sağlar. Her SharedPreferences dosyası çerçeve tarafından yönetilir ve gizli veya paylaşılabilir.

Bu sayfada, basit değerleri depolamak ve almak için SharedPreferences API'lerini nasıl kullanacağınız gösterilmektedir.

Paylaşılan tercihlerin herkese açık kimliğini alma

Yeni bir paylaşılan tercih dosyası oluşturabilir veya aşağıdaki yöntemlerden birini kullanarak mevcut bir dosyaya erişebilirsiniz:

  • getSharedPreferences(): İlk parametreyle belirttiğiniz adla tanımlanan birden fazla ortak tercih dosyasına ihtiyacınız varsa bunu kullanın. Bunu, uygulamanızdaki herhangi bir Context'dan çağırabilirsiniz.
  • getPreferences(): Etkinlik için yalnızca bir paylaşılan tercih dosyası kullanmanız gerekiyorsa bunu bir Activity dosyasından kullanın. Bu işlem, etkinliğe ait varsayılan bir paylaşılan tercih dosyası aldığı için bir ad sağlamanız gerekmez.

Örneğin, aşağıdaki kod, R.string.preference_file_key kaynak dizesi tarafından tanımlanan paylaşılan tercihler dosyasına erişir ve dosyaya yalnızca uygulamanız tarafından erişilebilmesi için dosyayı gizli modu kullanarak açar:

Kotlin

val sharedPref = activity?.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE)

Java

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

Paylaşılan tercih dosyalarınızı adlandırırken uygulamanız tarafından benzersiz şekilde tanımlanabilir bir ad kullanmalısınız. Bunu yapmanın iyi bir yolu, uygulama kimliğinizi dosya adının önüne eklemektir. Örneğin: "com.example.myapp.PREFERENCE_FILE_KEY"

Alternatif olarak, etkinliğiniz için yalnızca bir ortak tercih dosyasına ihtiyacınız varsa getPreferences() yöntemini kullanabilirsiniz:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

Java

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

Uygulama ayarlarını kaydetmek için SharedPreferences API'sini kullanıyorsanız uygulamanızın tamamı için varsayılan paylaşılan tercih dosyasını almak üzere bunun yerine getDefaultSharedPreferences() uygulamasını kullanmanız gerekir. Daha fazla bilgi için Ayarlar geliştirici kılavuzuna bakın.

Paylaşılan tercihlere yazma

Paylaşılan bir tercihler dosyasına yazmak için SharedPreferences cihazınızda edit() işlevini çağırarak bir SharedPreferences.Editor oluşturun.

Yazmak istediğiniz anahtarları ve değerleri putInt() ve putString() gibi yöntemlerle iletin. Ardından, değişiklikleri kaydetmek için apply() veya commit()'i çağırın. Örnek:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    putInt(getString(R.string.saved_high_score_key), newHighScore)
    apply()
}

Java

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score_key), newHighScore);
editor.apply();

apply(), bellekteki SharedPreferences nesnesini hemen değiştirir ancak güncellemeleri diske eşzamansız olarak yazar. Alternatif olarak, verileri diske senkronize olarak yazmak için commit() işlevini kullanabilirsiniz. Ancak commit() eşzamanlı olduğundan kullanıcı arayüzü oluşturma işlemini duraklatabileceği için ana iş parçacığınız üzerinden çağırmaktan kaçının.

Paylaşılan tercihlerden okuma

Paylaşılan bir tercihler dosyasından değer almak için getInt() ve getString() gibi yöntemleri çağırarak istediğiniz değeri girin ve anahtar yoksa döndürülecek varsayılan bir değer girin. Örneğin:

Kotlin


val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key)
val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)

Java


SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key);
int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);