一、SharedPreferences
1、基本介绍
-
SharedPreferences 是 Android 的一个轻量级存储工具,它采用
key - value
的键值对方式进行存储 -
它允许保存和读取应用中的基本数据类型,例如,String、int、float、boolean 等
-
保存共享参数键值对信息的文件路径为:
/data/data/【应用包名】/shared_prefs/【SharedPreferences 文件名】.xml
2、使用步骤
(1)获取 SharedPreferences 实例
-
其中,fileName 是为 SharedPreferences 文件指定的名称
-
mode 是文件的操作模式,通常是
MODE_PRIVATE
(私有模式)
SharedPreferences sharedPreferences = context.getSharedPreferences(【fileName】, 【mode】);
(2)写入数据
-
使用
SharedPreferences.Editor
来编辑数据,通过 SharedPreferences 实例的 edit 方法获取 Editor 对象 -
然后使用 put 相关方法来添加或修改数据,当
key - value
不存在时为添加,当key - value
存在时为修改 -
最后调用 commit 方法来提交更改
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString(【key】, 【value】);
edit.commit();
(3)读取数据
-
通过 SharedPreferences 实例的 get 相关方法来读取数据
-
如果 key 不存在,则返回 defValue 默认值
sharedPreferences.getString(【key】, 【defValue】);
二、SharedPreferences 工具类
1、代码
/**
* SharedPreferences 工具类
*/
public class MySPTool {
/**
* 存 String 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
* @param value 键值
*/
public static void setString(Context context, String fileName, String key, String value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString(key, value);
edit.commit();
}
/**
* 取 String 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
* @return
*/
public static String getString(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getString(key, "");
}
// ----------------------------------------------------------------------------------------------------
/**
* 存 int 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
* @param value 键值
*/
public static void setInt(Context context, String fileName, String key, int value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putInt(key, value);
edit.commit();
}
/**
* 取 int 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
* @return
*/
public static int getInt(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getInt(key, -1);
}
// ----------------------------------------------------------------------------------------------------
/**
* 存 float 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
* @param value 键值
*/
public static void setFloat(Context context, String fileName, String key, float value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putFloat(key, value);
edit.commit();
}
/**
* 取 float 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
* @return
*/
public static float getFloat(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getFloat(key, -1);
}
// ----------------------------------------------------------------------------------------------------
/**
* 存 boolean 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
* @param value 键值
*/
public static void setBoolean(Context context, String fileName, String key, boolean value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putBoolean(key, value);
edit.commit();
}
/**
* 取 boolean 类型的数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键值
* @return
*/
public static boolean getBoolean(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getBoolean(key, false);
}
// ----------------------------------------------------------------------------------------------------
/**
* 删除数据
*
* @param context 上下文对象
* @param fileName 文件名
* @param key 键名
*/
public static void remove(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.remove(key);
edit.commit();
}
/**
* 删除所有数据
*
* @param fileName 文件名
* @param context 上下文对象
*/
public static void clear(Context context, String fileName) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear();
edit.commit();
}
}
2、代码解析
(1)String 类型的数据操作
- 存 String 类型的数据
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
value | String | 键值 |
public static void setString(Context context, String fileName, String key, String value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString(key, value);
edit.commit();
}
- 取 String 类型的数据,如果 key 不存在,则返回默认值 “”(空字符串)
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
public static String getString(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getString(key, "");
}
(2)int 类型的数据操作
- 存 int 类型的数据
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
value | int | 键值 |
public static void setInt(Context context, String fileName, String key, int value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putInt(key, value);
edit.commit();
}
- 取 int 类型的数据,如果 key 不存在,则返回默认值 -1
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
public static int getInt(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getInt(key, -1);
}
(3)float 类型的数据操作
- 存 float 类型的数据
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
value | float | 键值 |
public static void setFloat(Context context, String fileName, String key, float value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putFloat(key, value);
edit.commit();
}
- 取 float 类型的数据,如果 key 不存在,则返回默认值 -1
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
public static float getFloat(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getFloat(key, -1);
}
(4)boolean 类型的数据操作
- 存 boolean 类型的数据
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
value | boolean | 键值 |
public static void setBoolean(Context context, String fileName, String key, boolean value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putBoolean(key, value);
edit.commit();
}
- 取 boolean 类型的数据,如果 key 不存在,则返回默认值 false
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
public static boolean getBoolean(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
return sharedPreferences.getBoolean(key, false);
}
(5)其他操作
- 删除数据
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
key | String | 键名 |
public static void remove(Context context, String fileName, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.remove(key);
edit.commit();
}
- 删除所有数据
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文对象 |
fileName | String | SharedPreferences 文件名 |
public static void clear(Context context, String fileName) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear();
edit.commit();
}