В чем разница между getDefaultSharedPreferences
и getSharedPreferences
в Android? Кто-нибудь может объяснить, пожалуйста?
224
В чем разница между getDefaultSharedPreferences
и getSharedPreferences
в Android? Кто-нибудь может объяснить, пожалуйста?
Context
экземпляр для вызова любого из них.Ответы:
getDefaultSharedPreferences
будет использовать имя по умолчанию, например «com.example.something_preferences», ноgetSharedPreferences
для него потребуется имя.getDefaultSharedPreferences
фактически используетContext.getSharedPreferences
(ниже непосредственно из источника Android):источник
getDefaultSharedPreferencesName
не публично, так как имя необходимо для структуры резервного копирования / восстановления.Давайте рассмотрим основные отличия:
getDefaultSharedPreferences()
использует имя файла настроек по умолчанию. Это значение по умолчанию установлено для каждого приложения, поэтому все действия в одном контексте приложения могут легко получить к нему доступ, как в следующем примере:Предпочтения обычно хранятся в
/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
.Альтернативный метод -
getSharedPreferences(name,mode)
требует указать конкретное имя предпочтения (файла) и режим работы (например, private, world_readable и т. Д.)Как уже упоминалось в copolii, результат тот же, но первый вариант проще и ему не хватает гибкости для разделения на несколько файлов предпочтений, что предлагается вторым вариантом
getSharedPreferences()
. Совместное использование предпочтений между приложениями, использующими индикатор работы MODE_WORLD_READABLE, также возможноgetSharedPreferences()
, но редко используется.ИМХО,
getDefaultSharedPreferences()
можно безопасно использовать, не вдаваясь в путаницу имен файлов предпочтений, которые подвержены опечаткам и путанице, если только вы не хотите, чтобы разные модули в вашем приложении использовали разные файлы предпочтений. Обычно это не нужно. Если приложению необходимо сохранить много параметров, вероятно, будет лучше использовать внешнюю базу данных, поскольку оно также обеспечивает лучшую защиту данных.Если кто-то знает хорошую причину для регулярного использования getSharedPreferences (), а не getDefaultSharedPreferences (), пожалуйста, дайте мне знать, комментируя здесь.
источник
Я знаю, что этот пост немного устарел, но начиная с 24.0.1 из библиотеки поддержки v7 вы можете получить настройки по умолчанию в любом месте, используя контекст
См. Https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefaultsharedpreferences
источник
Также есть 3-я функция:
См. Мой вопрос и ответ здесь: Возиться с общими предпочтениями Android - какую функцию использовать?
источник
Оба метода getSharedPreferences () и getDefaultSharedPreferences () используются для доступа к настройкам уровня приложения. GetDefaultSharedPreferences () используется для получения общих настроек, которые работают в соответствии с общей платформой предпочтений Android. getDefaultSharedPreferences () лучше использовать, поскольку он предоставляет объект SharedPreferences, который по умолчанию работает с PreferenceActivity.
источник
Помните, что использование общих настроек по умолчанию НЕ совпадает с использованием общих настроек с именем вашего пакета:
=> Имя общих настроек: " com.my.packagename "
=> Имя общих настроек: " com.my.packagename_preferences "
источник