为什么SharedPreferences需要两个键?

时间:2019-03-17 10:48:38

标签: android kotlin sharedpreferences

我试图构建一个处理我所有SharedPreferences的对象,因为它们大部分用在整个应用程序中,而且我不太了解为什么要用两个键来获取值。

呼叫看起来像这样:

context.getSharedPreferences(FirstKey, Context.MODE_PRIVATE).getString(SecondKey, default)

我知道它基本上是作为二维数组构建的。 FirstKey给了我一系列键值对,我可以使用SecondKey来获得价值。而且我知道,如果我有数十个SharedPreferences,这可能会很方便来管理它们并防止混淆/不必要的覆盖。

但这是必要的吗?如果我只喜欢保存10个首选项,还是对所有首选项使用一个FirstKey是否合理?

5 个答案:

答案 0 :(得分:2)

我想这是 封装,组织和管理 要存储的更好组(第一键值)的数据(第二键值)。因此,例如,如果您要检索所有设置首选项,则可以按“设置”文件(第一个键)对它们进行分组。或者,如果您想删除所有与用户首选项有关的存储值(首选语言,首选币种……),则可以在“ UserPref”文件(第一个键)中组织这些数据,然后可以在其中进行迭代以删除所有这些在您注销时或您认为对您的用户体验有用的任何刺激时都是如此。

答案 1 :(得分:2)

  

但这是必要的吗?如果我只有10个首选项,我还是要保存   还是只为我所有的人使用一个FirstKey是否合理   喜好?

因此,在这种情况下,可以像这样使用FirstKey来避免使用getDefaultSharedPreferences()

SharedPreferences.Editor editor =  PreferenceManager.getDefaultSharedPreferences(context).edit();
editor.putString("myKey", "myValue");
editor.apply();

或读取已设置的偏好设置:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String myPref = prefs.getString("myKey", "myDefaultValue"); 

答案 2 :(得分:0)

第一个键 检索并保留首选项文件的内容

第二个键 检索并保留此文件中的值

答案 3 :(得分:0)

您只能将“ FirstKey”用于您的所有首选项,并且通常仅以此方式为我们开发它。您可以通过在getSharedPreference()时更改“第一个键”来创建共享首选项的多个实例。假设您要为项目中的两个不同模块使用两个不同的共享首选项,然后更改“ FirstKey”参数,在这种情况下,由于有两个不同的共享首选项,因此在存储和从首选项中获取数据时要小心两个。

答案 4 :(得分:0)

正如您正确指出的那样,第一个键代表一组键/值对(实际上与单个文件非常相似),第二个键帮助您获取该文件/组中的值。

我个人认为,这种设计非常有用,特别是在您可能希望将所有价值划分为不同类别的情况下。如果您的应用程序很小,则可以将所有值保存在一个文件/组中。否则,您可以将所有值拆分为单独的文件/组。

我希望这会有所帮助。.编码愉快!