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 dosyaya işaret eder ve okuması için basit yöntemler sunar yazıyorum. Her SharedPreferences dosyası çerçeve tarafından yönetilir ve gizli veya paylaşılabilir.

Bu sayfada, verileri depolamak için SharedPreferences API'lerinin nasıl kullanılacağı gösterilmektedir basit değerleri alma.

Paylaşılan tercihlere herkese açık kullanıcı adı ekleyin

Yeni bir paylaşılan tercih dosyası oluşturabilir veya şu yöntemlerden birini kullanın:

  • getSharedPreferences(): Birden fazla paylaşıma ihtiyacınız varsa bunu kullanın ada göre tanımlanan tercih dosyaları (ilk olarak parametresinden sonra bir değer girin. Bunu, uygulamanızdaki herhangi bir Context'dan çağırabilirsiniz.
  • getPreferences(): Aşağıdakilere ihtiyacınız varsa bunu bir Activity üzerinden kullanın. etkinlik için yalnızca bir paylaşılan tercih dosyası kullanmak. Çünkü bu Etkinliğe ait varsayılan bir paylaşılan tercih dosyası getirdiğinde ve bir ad vermeniz gerekmez.

Örneğin, aşağıdaki kod R.string.preference_file_key kaynak dizesiyle tanımlanır ve bu dizeyi açar dosyaya yalnızca uygulamanız tarafından erişilebilmesi için gizli modu kullanın:

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 tarafından tanımlanabilir. Bunun iyi bir yolu, uygulama kimliğiniz. Örnek: "com.example.myapp.PREFERENCE_FILE_KEY".

Alternatif olarak, etkinliğiniz için yalnızca bir paylaşılan 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'yi kullanıyorsanız bunun yerine varsayılan değeri almak için getDefaultSharedPreferences() kullanmalıdır paylaşılmış tercih dosyası ekleyebilirsiniz. Daha fazla bilgi için Ayarlar geliştirici kılavuzu.

Paylaşılan tercihlere yazma

Paylaşılan tercihler dosyasına yazmak için bir SharedPreferences.Editor oluşturun SharedPreferences cihazınızda edit() numaralı telefonu arayarak.

Yazmak istediğiniz anahtarları ve değerleri aşağıdaki gibi yöntemlerle iletin: putInt() veputString(). Ardından apply() numaralı telefonu arayın veya Değişiklikleri kaydetmek için commit(). Ö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(), bellek içi SharedPreferences nesnesini hemen değiştirir ancak , güncellemeleri diske eşzamansız olarak yazar. Alternatif olarak, commit() işlevini kullanabilirsiniz komutunu çalıştırın. Ancak commit() eşzamanlı olduğundan Kullanıcı arayüzünüzü duraklatabileceği için ana iş parçacığınızdan çağırmaktan kaçınmalısınız. oluşturma.

Paylaşılan tercihlerden okuma

Paylaşılan tercihler dosyasından değer almak için getInt() ve getString(), girdiğiniz değer için anahtar sağlar istek ve isteğe bağlı olarak anahtar yoksa döndürülecek varsayılan bir değer girin. Örneğin, örnek:

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