Jam*_*mes 217 android android-preferences sharedpreferences
Android getDefaultSharedPreferences和getSharedPreferencesAndroid有什么区别?有人可以解释一下吗?
cop*_*lii 222
getDefaultSharedPreferences将使用默认的名称,比如"com.example.something_preferences",但getSharedPreferences将需要一个名字.
getDefaultSharedPreferences实际上使用Context.getSharedPreferences(下面是直接来自Android源码):
public static SharedPreferences getDefaultSharedPreferences(Context context) {
return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
getDefaultSharedPreferencesMode());
}
private static String getDefaultSharedPreferencesName(Context context) {
return context.getPackageName() + "_preferences";
}
private static int getDefaultSharedPreferencesMode() {
return Context.MODE_PRIVATE;
}
Run Code Online (Sandbox Code Playgroud)
wiz*_*ail 119
让我们回顾一下差异的基本点:
getDefaultSharedPreferences()使用默认的首选项文件名.此默认值是针对每个应用程序设置的,因此同一应用程序上下文中的所有活动都可以轻松访问它,如下例所示:
SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
if (spref.contains("email")) {
String sEmailAddr = spref.getString("email", "");
}
Run Code Online (Sandbox Code Playgroud)
首选项通常存储在/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()的充分理由,请在此处通过评论告诉我.
| 归档时间: |
|
| 查看次数: |
80997 次 |
| 最近记录: |