目录
一、SharedPreferences是什么?
SharedPreferences是Android中用于存储轻量级持久化数据的一种机制。它提供了一种简单的键值对存储方式,可以用于存储应用程序的配置参数、用户偏好设置等数据。
下面是SharedPreferences类的常用方法:
-
获取SharedPreferences实例:
SharedPreferences preferences = getSharedPreferences("data_SharedPreferences", MODE_PRIVATE);
getSharedPreferences()
方法通过指定的文件名和访问模式获取一个SharedPreferences对象。- 参数1:文件名,用于标识所操作的SharedPreferences文件。
- 参数2:访问模式,表示对SharedPreferences文件的访问权限。
-
修改SharedPreferences数据:
SharedPreferences.Editor editor = preferences.edit(); editor.putString("name", "Xiao Ming"); editor.putInt("age", 18); editor.apply();
- 调用
edit()
方法返回一个Editor对象,用于编辑SharedPreferences数据。 - 使用Editor对象的
putXXX()
方法存储键值对数据。 - 最后调用
apply()
或commit()
方法提交修改。
- 调用
-
获取SharedPreferences数据:
String name = preferences.getString("name", ""); int age = preferences.getInt("age", 0);
- 调用SharedPreferences对象的
getXXX()
方法获取对应键的值。 - 参数1:键名。
- 参数2:默认值,当该键不存在时返回的默认值。
- 调用SharedPreferences对象的
-
删除SharedPreferences数据:
editor.remove("name"); editor.apply();
- 使用Editor对象的
remove()
方法删除指定键的数据。
- 使用Editor对象的
-
清空SharedPreferences数据:
editor.clear(); editor.apply();
- 使用Editor对象的
clear()
方法清空所有数据。
- 使用Editor对象的
总结:SharedPreferences提供了方便的读写接口,用于存储和获取应用程序需要持久化的配置参数和用户偏好设置等数据。通过编辑器(Editor)对象,可以修改、删除或清空SharedPreferences中的数据。在修改完数据之后,需要调用apply()
或commit()
方法,将修改提交并同步到磁盘上的文件中。
二、使用步骤
1.demo
// 获取 SharedPreferences.Editor 实例,用于编辑 SharedPreferences 数据
SharedPreferences.Editor editor = getSharedPreferences("data_SharedPreferences", MODE_PRIVATE).edit();
// 存储字符串数据
editor.putString("name", "Xiao Ming");
// 存储整数数据
editor.putInt("age", 18);
// 应用编辑结果
editor.apply();
// 获取 SharedPreferences 实例,用于读取 SharedPreferences 数据
SharedPreferences preferences = getSharedPreferences("data_SharedPreferences", MODE_PRIVATE);
// 使用链式调用获取 SharedPreferences.Editor 实例,并存储整数数据
preferences.edit().putInt("age2", 19);
// 获取存储的整数数据,默认值为 0
int age = preferences.getInt("age", 0);
// 获取存储的字符串数据,默认值为空字符串
String name = preferences.getString("name", "");
// 显示 Toast 提示内容
Toast.makeText(this, "age:" + age + " name:" + name, Toast.LENGTH_LONG).show();
2.注意事项
在使用SharedPreferences时,需要注意以下几点:
-
Context上下文:获取SharedPreferences实例需要依赖Context对象。确保在正确的地方获取Context,并确保Context的有效性。
-
SharedPreferences文件名和访问模式:在获取SharedPreferences实例时,需要指定一个文件名和访问模式。文件名用于标识所操作的SharedPreferences文件,应当保证唯一性。访问模式用于指定对SharedPreferences文件的访问权限。
-
编辑器(Editor)对象:为了修改SharedPreferences中的数据,需要先获得一个Editor对象。通过Editor对象,可以进行数据的存储、修改、删除等操作。
-
提交修改:对SharedPreferences进行修改后,需要调用apply()或commit()方法将修改提交。apply()是异步提交,在后台写入数据;而commit()是同步提交,并返回提交结果。根据具体需求选择合适的方法。
-
默认值:在获取SharedPreferences中的数据时,可以设置一个默认值,当无法获取到指定键的值时,会返回该默认值。
-
数据类型:SharedPreferences支持的数据类型包括布尔型、整型、浮点型、长整型和字符串型等,需要根据实际需求选择合适的数据类型进行存取。
-
删除和清空:通过Editor对象的remove()方法可以删除指定键的数据,通过clear()方法可以清空所有数据。删除和清空的操作需要在调用apply()或commit()方法之后才会生效。
-
线程安全:SharedPreferences本身是线程安全的,可以在多个线程中同时读写数据。但在多线程并发操作时,建议适当进行同步控制,以避免数据错误或冲突。
-
不适用场景:SharedPreferences适合用于存储简单的配置参数和用户偏好设置等小量数据,不适合存储大量结构复杂的数据或频繁修改的数据。对于复杂数据和大量数据的存储,可以考虑其他持久化方案,如数据库等。