📜  Android 中的首选项数据存储(1)

📅  最后修改于: 2023-12-03 14:39:09.745000             🧑  作者: Mango

Android 中的首选项数据存储

在 Android 中,首选项(Preferences)是一种轻量级的数据存储方式,用于存储程序的配置和用户偏好设置。它们以键值对的形式存储,对于小规模的数据存储非常方便。

获取 SharedPreferences 实例

获取 SharedPreferences 实例有两种方式:

  1. Context#getSharedPreferences():使用该方法可以获取指定名称的 SharedPreferences 实例。
SharedPreferences sharedPreferences = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
  1. Activity#getPreferences():Activity 继承自 Context,可以使用该方法获取 Activity 自身的 SharedPreferences 实例。实际上,该方法相当于调用 Context#getSharedPreferences() 时第一个参数为 Activity 的类名。
SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE);
存储数据到 SharedPreferences

存储数据到 SharedPreferences 需要使用其中的 SharedPreferences.Editor 对象。

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("username", "foo");
editor.putBoolean("is_login", true);
editor.apply();
从 SharedPreferences 中读取数据

读取数据可以使用 SharedPreferences 实例的 getter 方法。

String username = sharedPreferences.getString("username", null);
boolean isLogin = sharedPreferences.getBoolean("is_login", false);

这里使用了 getString() 和 getBoolean() 方法获取键对应的值。第二个参数为默认值,如果指定的键找不到对应的值,则返回该默认值。

SharedPreferences 的模式

使用 Context#getSharedPreferences() 方法获取 SharedPreferences 实例时,需要传入一个模式(mode)参数。该参数用于指定 SharedPreferences 的模式,通常有以下四个常量可选。

  1. MODE_PRIVATE:默认模式,只有当前应用程序可以访问该 SharedPreferences。
  2. MODE_WORLD_READABLE:允许其他应用程序读取该 SharedPreferences 中保存的数据。该模式不推荐使用,因为会存在安全隐患。
  3. MODE_WORLD_WRITEABLE:允许其他应用程序读取和写入该 SharedPreferences 中保存的数据。该模式不推荐使用,因为会存在安全隐患。
  4. MODE_MULTI_PROCESS:支持跨进程访问 SharedPreferences 实例。
总结

通过本篇文章的介绍,我们可以了解到 SharedPreferences 这种轻量级的数据存储方式。它适用于存储小规模的数据,如应用程序的配置和用户偏好设置。使用 SharedPreferences 可以简单快捷地存储和读取数据,不需要考虑复杂的底层实现。不过需要注意,SharedPreferences 并不适合存储大量的数据,否则可能会影响应用程序的性能。