目录
在Android开发中,SharedPreferences
(简称SP)是一个轻量级的数据存储方式,常用于保存应用的配置信息或少量的数据。为了便于在全局使用,可以将其封装到一个工具类中。
以下是一个带有详细中文注释的全局SharedPreferences
存储工具类的Java代码示例:
全局SharedPreferences
工具类
import android.content.Context;
import android.content.SharedPreferences;
public class SPUtils {
private static SharedPreferences sharedPreferences;
private static SharedPreferences.Editor editor;
// 默认的SP文件名
private static final String SP_NAME = "app_shared_preferences";
/**
* 初始化SharedPreferences工具类
* @param context 上下文对象,通常传入Application的context
*/
public static void init(Context context) {
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
}
/**
* 保存字符串类型数据
* @param key 键名
* @param value 键值
*/
public static void putString(String key, String value) {
editor.putString(key, value);
editor.apply(); // 异步提交
}
/**
* 获取字符串类型数据
* @param key 键名
* @param defaultValue 默认值,当找不到对应key时返回此值
* @return 返回字符串类型的值
*/
public static String getString(String key, String defaultValue) {
return sharedPreferences.getString(key, defaultValue);
}
/**
* 保存整型数据
* @param key 键名
* @param value 键值
*/
public static void putInt(String key, int value) {
editor.putInt(key, value);
editor.apply(); // 异步提交
}
/**
* 获取整型数据
* @param key 键名
* @param defaultValue 默认值
* @return 返回整型值
*/
public static int getInt(String key, int defaultValue) {
return sharedPreferences.getInt(key, defaultValue);
}
/**
* 保存布尔类型数据
* @param key 键名
* @param value 键值
*/
public static void putBoolean(String key, boolean value) {
editor.putBoolean(key, value);
editor.apply(); // 异步提交
}
/**
* 获取布尔类型数据
* @param key 键名
* @param defaultValue 默认值
* @return 返回布尔类型值
*/
public static boolean getBoolean(String key, boolean defaultValue) {
return sharedPreferences.getBoolean(key, defaultValue);
}
/**
* 保存长整型数据
* @param key 键名
* @param value 键值
*/
public static void putLong(String key, long value) {
editor.putLong(key, value);
editor.apply(); // 异步提交
}
/**
* 获取长整型数据
* @param key 键名
* @param defaultValue 默认值
* @return 返回长整型值
*/
public static long getLong(String key, long defaultValue) {
return sharedPreferences.getLong(key, defaultValue);
}
/**
* 保存浮点型数据
* @param key 键名
* @param value 键值
*/
public static void putFloat(String key, float value) {
editor.putFloat(key, value);
editor.apply(); // 异步提交
}
/**
* 获取浮点型数据
* @param key 键名
* @param defaultValue 默认值
* @return 返回浮点型值
*/
public static float getFloat(String key, float defaultValue) {
return sharedPreferences.getFloat(key, defaultValue);
}
/**
* 移除指定键的数据
* @param key 键名
*/
public static void remove(String key) {
editor.remove(key);
editor.apply(); // 异步提交
}
/**
* 清除所有保存的数据
*/
public static void clear() {
editor.clear();
editor.apply(); // 异步提交
}
}
代码说明:
-
初始化方法
init(Context context)
:
- 在应用启动时调用一次该方法来初始化
SharedPreferences
对象。通常你会在Application
类中调用该方法。 - 使用
Context.MODE_PRIVATE
模式,这意味着存储的数据仅对本应用可见。
-
数据存取方法:
putString()
,getString()
等方法分别用于存储和获取不同类型的数据(String
,int
,boolean
,long
,float
)。- 你可以根据需要扩展支持其他类型的数据。
- 使用
editor.apply()
异步提交数据,也可以使用editor.commit()
同步提交,但一般推荐使用apply()
以提高性能。
-
删除与清空数据:
remove()
方法可以删除指定键的数据。clear()
方法可以清除所有存储的数据。
如何使用这个工具类?
-
在Application中初始化:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // 初始化SP工具类 SPUtils.init(this); } }
-
在任何地方存取数据:
// 保存数据 SPUtils.putString("username", "张三"); SPUtils.putInt("age", 25); SPUtils.putBoolean("isLoggedIn", true); // 获取数据 String username = SPUtils.getString("username", "默认用户"); int age = SPUtils.getInt("age", 0); boolean isLoggedIn = SPUtils.getBoolean("isLoggedIn", false);
通过这个工具类,你可以方便地在应用的任何地方进行数据存取,且不必重复编写SharedPreferences
相关的代码。