Qual é a diferença entre getDefaultSharedPreferences
e getSharedPreferences
no Android? Alguém pode explicar?
224
Qual é a diferença entre getDefaultSharedPreferences
e getSharedPreferences
no Android? Alguém pode explicar?
Context
instância para chamá- las .Respostas:
getDefaultSharedPreferences
usará um nome padrão como "com.example.something_preferences", masgetSharedPreferences
vai exigir um nome.getDefaultSharedPreferences
de fato usaContext.getSharedPreferences
(abaixo é diretamente da fonte do Android):fonte
getDefaultSharedPreferencesName
não é público, pois o nome é necessário para a estrutura de backup / restauração.Vamos revisar os pontos básicos da diferença:
getDefaultSharedPreferences()
usa um nome de arquivo de preferência padrão. Esse padrão é definido por aplicativo, para que todas as atividades no mesmo contexto de aplicativo possam acessá-lo facilmente, como no exemplo a seguir:As preferências são geralmente armazenadas em
/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
.O método alternativo -
getSharedPreferences(name,mode)
requer a indicação de um nome de preferência (arquivo) específico e um modo de operação (por exemplo, privado, legível pelo mundo etc.)Conforme mencionado por copolii, o resultado é o mesmo, mas a primeira opção é mais simples e não possui flexibilidade para dividir em vários arquivos de preferência, oferecidos pela segunda opção de
getSharedPreferences()
. Compartilhar as preferências entre aplicativos usando um indicador de operação MODE_WORLD_READABLE também é algo possível de usargetSharedPreferences()
, mas raramente é usado.IMHO,
getDefaultSharedPreferences()
pode ser usado com segurança sem entrar na confusão de vários nomes de arquivos preferenciais propensos a erros de digitação e confusão, a menos que você queira que módulos diferentes no seu aplicativo usem arquivos de preferências diferentes. Normalmente isso não é necessário. Se um aplicativo precisar salvar muitos parâmetros, provavelmente usar banco de dados externo será melhor, pois oferece também melhor proteção de dados.Se alguém souber de um bom motivo para usar regularmente getSharedPreferences () e não getDefaultSharedPreferences (), informe-me comentando aqui.
fonte
Eu sei que este post é um pouco antigo, mas desde a 24.0.1 da biblioteca de suporte da v7 você pode recuperar as preferências padrão por contexto em qualquer lugar usando
Consulte https://developer.android.com/reference/android/support/v7/preference/PreferenceManager#getdefaultsharedpreferences
fonte
Há uma terceira função também:
Veja minha pergunta e resposta aqui: Mexa com as preferências compartilhadas do Android - qual função usar?
fonte
GetSharedPreferences () e getDefaultSharedPreferences () são usados para acessar as preferências no nível do aplicativo .getDefaultSharedPreferences () é usado para obter as preferências compartilhadas que funcionam de acordo com a estrutura geral de preferências do Android. É melhor usar getDefaultSharedPreferences (), pois fornece o objeto SharedPreferences que funciona com uma PreferenceActivity por padrão.
fonte
Esteja ciente de que usar preferências compartilhadas padrão NÃO é o mesmo que usar preferências compartilhadas com o nome do seu pacote:
=> Nome das preferências compartilhadas: " com.my.packagename "
=> Nome das preferências compartilhadas: " com.my.packagename_preferences "
fonte