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 birContext
'dan çağırabilirsiniz.getPreferences()
: Etkinlik için yalnızca bir paylaşılan tercih dosyası kullanmanız gerekiyorsa bunu birActivity
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);