SharedPreferences ile basit verileri kaydedin

Kaydetmek istediğiniz nispeten az sayıda anahtar/değer çiftiniz varsa SharedPreferences API'lerini kullanabilirsiniz. SharedPreferences nesnesi, anahtar/değer çiftlerini içeren bir dosyaya işaret eder ve bunları okuyup yazmak için basit yöntemler sunar. 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'lerinin nasıl kullanılacağı gösterilmektedir.

Paylaşılan tercihler için herkese açık kullanıcı adı alma

Aşağıdaki yöntemlerden birini çağırarak yeni bir paylaşılan tercih dosyası oluşturabilir veya mevcut bir dosyaya erişebilirsiniz:

  • getSharedPreferences(): İlk parametrede belirttiğiniz ada göre tanımlanmış birden fazla paylaşılan tercih dosyasına ihtiyacınız varsa bunu kullanın. Bunu uygulamanızdaki herhangi bir Context bölümünden çağırabilirsiniz.
  • getPreferences(): Etkinlik için yalnızca bir paylaşılan tercih dosyası kullanmanız gerekiyorsa Activity öğesinden bunu 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 bu 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 olarak tanımlanabilir bir ad kullanmalısınız. Bunu yapmanın iyi bir yolu, dosya adının önüne uygulama kimliğinizi eklemektir. Örneğin: "com.example.myapp.PREFERENCE_FILE_KEY"

Alternatif olarak, etkinliğiniz için yalnızca tek bir paylaşılan tercih dosyasına ihtiyacınız varsa getPreferences() yöntemini de 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 getDefaultSharedPreferences() kullanmanız gerekir. Daha fazla bilgi için Ayarlar geliştirici kılavuzuna bakın.

Paylaşılan tercihlere yaz

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

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

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 eşzamansız olarak diske yazar. Alternatif olarak, verileri eşzamanlı olarak diske yazmak için commit() kullanabilirsiniz. Ancak commit() eşzamanlı olduğundan, kullanıcı arayüzünüzün oluşturulmasını duraklatabileceği için bu iş parçacığını ana iş parçacığınızdan çağırmamalısınız.

Paylaşılan tercihlerden oku

Paylaşılan tercihler dosyasından değer almak için getInt() ve getString() gibi yöntemleri çağırarak istediğiniz değerin anahtarını ve anahtar yoksa döndürülecek varsayılan değeri sağlayabilirsiniz. Ö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);