Apa perbedaan antara getDefaultSharedPreferences
dan getSharedPreferences
di Android? Adakah yang bisa menjelaskannya?
224
Apa perbedaan antara getDefaultSharedPreferences
dan getSharedPreferences
di Android? Adakah yang bisa menjelaskannya?
Context
instance untuk memanggil salah satu dari keduanya.Jawaban:
getDefaultSharedPreferences
akan menggunakan nama default seperti "com.example.something_preferences", tetapigetSharedPreferences
akan membutuhkan nama.getDefaultSharedPreferences
sebenarnya penggunaanContext.getSharedPreferences
(di bawah ini langsung dari sumber Android):sumber
getDefaultSharedPreferencesName
tidak umum karena nama diperlukan untuk kerangka cadangan / pemulihan.Mari kita tinjau poin dasar perbedaan:
getDefaultSharedPreferences()
menggunakan nama file preferensi standar. Default ini disetel per aplikasi, sehingga semua aktivitas dalam konteks aplikasi yang sama dapat mengaksesnya dengan mudah seperti dalam contoh berikut:Preferensi biasanya disimpan di
/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
.Metode alternatif -
getSharedPreferences(name,mode)
mengharuskan untuk menunjukkan nama (file) preferensi tertentu dan mode operasi (misalnya pribadi, world_readable, dll.)Seperti yang disebutkan oleh copolii, hasilnya sama, tetapi opsi pertama lebih sederhana dan tidak memiliki fleksibilitas untuk dipecah menjadi beberapa file preferensi, yang ditawarkan oleh opsi kedua
getSharedPreferences()
. Berbagi preferensi antara aplikasi menggunakan MODE_WORLD_READABLE indikator operasi juga sesuatu yang mungkin digunakangetSharedPreferences()
, tetapi jarang digunakan.IMHO,
getDefaultSharedPreferences()
dapat digunakan dengan aman tanpa masuk ke dalam kebingungan beberapa nama file preferensi yang rentan terhadap kesalahan ketik dan kebingungan, kecuali jika Anda ingin modul yang berbeda di aplikasi Anda akan menggunakan file preferensi yang berbeda. Biasanya ini tidak diperlukan. Jika aplikasi perlu menyimpan banyak parameter, mungkin menggunakan basis data eksternal akan lebih baik karena menawarkan perlindungan data yang lebih baik.Jika seseorang mengetahui alasan yang bagus untuk menggunakan getSharedPreferences () secara teratur dan tidak getDefaultSharedPreferences (), beri tahu saya dengan berkomentar di sini.
sumber
Saya tahu posting ini agak lama, tetapi karena 24.0.1 dari perpustakaan dukungan v7 Anda dapat mengambil preferensi default berdasarkan konteks di mana saja menggunakan
Lihat https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefault Sharedpreferences
sumber
Ada fungsi ke-3 juga:
Lihat pertanyaan dan jawaban saya di sini: Bercak dengan preferensi bersama android - yang berfungsi untuk digunakan?
sumber
Baik getSharedPreferences () dan getDefaultSharedPreferences () digunakan untuk mengakses preferensi level aplikasi .getDefaultSharedPreferences () digunakan untuk mendapatkan preferensi bersama yang berfungsi sesuai dengan kerangka preferensi keseluruhan Android. getDefaultSharedPreferences () lebih baik digunakan karena memberikan objek SharedPreferences yang berfungsi dengan PreferenceActivity secara default.
sumber
Ketahuilah bahwa menggunakan preferensi bersama default TIDAK sama dengan menggunakan preferensi bersama dengan nama paket Anda:
=> Nama preferensi bersama: " com.my.packagename "
=> Nama preferensi bersama: " com.my.packagename_preferences "
sumber