自己封装的 SharedPreferences,很简单的封装,直接上代码
public class SPManager {
private static final String ACCOUNT = "account";
private static final String PASSWORD = "password";
private static final String USER_ID = "user_id";
private static final String USER_NAME = "user_name";
private static final String LAST_DAY = "last_day";
private static Context mContext;
private SharedPreferences sp;
private SharedPreferences.Editor editor;
private SPManager() {
sp = PreferenceManager.getDefaultSharedPreferences(mContext);
editor = sp.edit();
}
public static SPManager getInstance(Context context) {
//使用 ApplicationContext 防止内存泄漏
mContext = context.getApplicationContext();
return Singer.sputils;
}
//使用静态内部类的方式创建单例
private static class Singer {
static SPManager sputils = new SPManager();
}
//封装 SharedPreferences 的各种 put 方法
//返回 this ,方便链式调用
private SPManager put(String key, Object value) {
if (value instanceof String) {
editor.putString(key, (String) value);
} else if (value instanceof Integer) {
editor.putInt(key, (Integer) value);
} else if (value instanceof Boolean) {
editor.putBoolean(key, (Boolean) value);
} else if (value instanceof Long) {
editor.putLong(key, (Long) value);
} else if (value instanceof Float) {
editor.putFloat(key, (Float) value);
}
return this;
}
//封装 SharedPreferences 的各种 get 方法
//使用泛型,调用时不用再强制转换
private <T> T get(String key, Object defValue) {
if (defValue instanceof String) {
return (T) sp.getString(key, (String) defValue);
} else if (defValue instanceof Integer) {
return (T) Integer.valueOf(sp.getInt(key, (Integer) defValue));
} else if (defValue instanceof Boolean) {
return (T) Boolean.valueOf(sp.getBoolean(key, (Boolean) defValue));
} else if (defValue instanceof Long) {
return (T) Long.valueOf(sp.getLong(key, (Long) defValue));
} else if (defValue instanceof Float) {
return (T) Float.valueOf(sp.getFloat(key, (Float) defValue));
}
return null;
}
//以下几个方法是写好的固定的要保存和获取的数据,方便直接调用
public String getAccount() {
return get(ACCOUNT, "");
}
public SPManager putAccount(String account) {
return put(ACCOUNT, account);
}
public String getPassword() {
return get(PASSWORD, "");
}
public SPManager putPassword(String password) {
return put(PASSWORD, password);
}
public int getUserId() {
return get(USER_ID, 0);
}
public SPManager putUserId(int userId) {
return put(USER_ID, userId);
}
public String getUserName() {
return get(USER_NAME, "");
}
public SPManager putUserName(String userName) {
return put(USER_NAME, userName);
}
public int getLastDate() {
return get(LAST_DAY, -1);
}
public SPManager putLastDate(int lastDate) {
return put(LAST_DAY, lastDate);
}
public void apply() {
editor.apply();
}
}