何时使用getDefaultSharedPreferences和getSharedPreferences

Toa*_*Van 21 android

我只是好奇.有3种方法:

1. getPreferenceManager().setSharedPreferencesName(String PrefName);

2. PreferenceManager.getDefaultSharedPreferences(Context context)

3. Context.getSharedPreferences (String name, int mode)
Run Code Online (Sandbox Code Playgroud)

据我所知,第三种方法仅在使用第一种方法时使用,对吧?但是我们也用3种方法addPreferencesFromResource(int resID); 那么区别是什么呢?我们什么时候可以使用这些方法之一?谢谢!

wiz*_*ail 24

让我们一步一步:

  1. setSharedPreferencesName()是允许设置首选项组的名称供以后使用的方法.例如,在通过调用从XML资源文件加载首选项之前 使用PreferencesActivity的帮助类时,这很有用 addPreferencesFromResource().因此,它不像您上面提到的其他两种方法那样常见.

  2. getDefaultSharedPreferences()使用默认名称,通常存储为/data/data/com.package.name/shared_prefs/com.package.name_preferences.xml.它是常用的.请注意,此默认值是按应用程序设置的.

    替代方法 - getSharedPreferences()需要指示特定的首选项(文件)名称和操作模式.

  3. 正如在另一个关于共享首选项的答案中所显示的那样, getDefaultSharedPreferences()实际上使用了Context.getSharedPreferences,因此结果是相同的,但没有灵活性可以拆分为多个首选项文件getSharedPreferences().使用MODE_WORLD_READABLE操作指示器在应用程序之间共享首选项也是可能的getSharedPreferences(),但很少使用.

恕我直言,getDefaultSharedPreferences()可以安全使用,而不会混淆容易出现错别字和混淆的多个首选项文件名.

如果有人知道使用getSharedPreferences()而不是getDefaultSharedPreferences()的充分理由,请在此处通过评论告诉我.