getSharedPreferences()中的String参数有什么作用?

时间:2016-10-20 17:38:59

标签: android parameters android-sharedpreferences

编辑:提供的“重复”并不能解决我的问题,因为它没有完全回答我的问题。 (缺少关于第二个参数的信息)。

此问题旨在清除新Android开发人员的信息,并来解决我自己的问题。请重新考虑下注。

所以,这是方法:

getSharedPreferences(string, Context.MODE_PRIVATE);

我无法真正得到第一个参数的作用。它有什么作用?为什么有第一个参数,如果我们将某些内容保存到SharedPreferences,我们会使用密钥?

2 个答案:

答案 0 :(得分:3)

Android Developer Documentation for getSharedPreferences()中所述,该方法的完整签名是:

SharedPreferences getSharedPreferences (String name, int mode)

正式签名提供第一个参数name的名称,这是对答案有用的信息。 name参数是位于应用程序私有存储中的XML首选项文件的基本名称(没有文件扩展名)。

例如,此调用将返回SharedPreferences个实例,以允许读取和编写应用的settings.xml首选项文件:

SharedPreferences sharedPrefs = getSharedPreferences("settings", Context.MODE_PRIVATE);

如官方文档中所示,返回的SharedPreferences对象是单实例对象,在所有调用方之间共享相同的文件名。这意味着给定调用不一定意味着文件IO读取给定的首选项,但可能在同一个应用程序中的线程之间产生线程同步。

如果指定的文件在调用getSharedPreferences()之前尚未存在,则会创建该文件。第二个参数mode是创建文件时使用的模式,应设置为Context.MODE_PRIVATE(或者它的整数值0);其他模式值未记录为允许,不应使用。与创建任何文件时一样,指示Context.MODE_PRIVATE模式会将文件定位到应用程序的私有存储中,与getSharedPreferences()一样使用。

将值(999)写入setting实例中的键(SharedPreferences)的示例如下:

Context context = getActivity();
SharedPreferences sharedPrefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putInt("setting", 999);
editor.apply();

从同一个键读取值是这样做的:

Context context = getActivity();
SharedPreferences sharedPrefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
sharedPrefs.getInt("setting", 0);

其他使用信息可在Saving Key-Value Sets。{/ p>的Android Getting Started Guide页面中找到

请注意,getSharedPreferences()getPreferences()的通用版本,通常是常见应用程序首选项的更好选择。除了指定与getSharedPreferences()使用哪个首选项文件的能力之外,这两种方法在功能和行为方面都是相同的。根据{{​​1}}文档,它只需使用" 此活动的类名作为首选项名称"来调用getPreferences()。 (getSharedPreferences()的第一个参数)。

答案 1 :(得分:-1)

String中的getSharedPreferences()参数是存储您提供的键和值的文件名。例如:

SharedPreferences.Editor s = getSharedPreferences("Pref",Context.MODE_PRIVATE).edit();
s.putInt("someKey",0);
s.apply();

将在您的应用中创建一个名为Pref的输出文件,其中包含您输入的密钥。