一、SharedPreferences
1、基本介绍
-
SharedPreferences 是 Android 的一个轻量级存储工具,它采用
key - value
的键值对方式进行存储 -
它允许保存和读取应用中的基本数据类型,例如,String、int、float、boolean 等
-
保存共享参数键值对信息的文件路径为:
/data/data/【应用包名】/shared_prefs/【SharedPreferences 文件名】.xml
2、使用步骤
(1)获取 SharedPreferences 实例
-
其中,fileName 是为 SharedPreferences 文件指定的名称
-
mode 是文件的操作模式,通常是
MODE_PRIVATE
(私有模式)
java">SharedPreferences sharedPreferences = context.getSharedPreferences(【fileName】, 【mode】);
(2)写入数据
-
使用
SharedPreferences.Editor
来编辑数据,通过 SharedPreferences 实例的 edit 方法获取 Editor 对象 -
然后使用 put 相关方法来添加或修改数据,当
key - value
不存在时为添加,当key - value
存在时为修改 -
最后调用 commit 方法来提交更改
java">SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString(【key】, 【value】);
edit.commit();
(3)读取数据
-
通过 SharedPreferences 实例的 get 相关方法来读取数据
-
如果 key 不存在,则返回 defValue 默认值
java">sharedPreferences.getString(【key】, 【defValue】);
二、SharedPreferences 工具类
1、代码
java">/*** 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 | 键值 |
java">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 | 键名 |
java">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 | 键值 |
java">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 | 键名 |
java">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 | 键值 |
java">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 | 键名 |
java">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 | 键值 |
java">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 | 键名 |
java">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 | 键名 |
java">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 文件名 |
java">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();
}