一、SharedPreferences 简介
SharedPreferences是Android的一个接口类,是Android 数据存储(保存内部)的一种方法。主要以*.xml的形式保存在Android /data/data/com.***包名/shared_prefs下,SharedPreferences 类提供了一个通用框架,以便用户能够保存和检索原始数据类型的键值对,原始数据类型如下:Boolean,Int,Float,Long,String
参考:SharedPreferences 使用详解-CSDN博客
二、封装SharedPreferencesUtils方法 :
public class SharedPreferencesUtils {
private static final String FILE_NAME = "share_date";
private static SharedPreferencesUtils instance;
private static SharedPreferences mSharedPreferences;
private SharedPreferencesUtils(Context context) {
SharedPreferencesUtils.mSharedPreferences = context.getSharedPreferences("share_date", 0);
}
public static SharedPreferencesUtils getInstance() {
if (SharedPreferencesUtils.instance == null) {
throw new RuntimeException("class should init!");
}
return SharedPreferencesUtils.instance;
}
public static void init(Context context) {
synchronized (SharedPreferencesUtils.class) {
if (SharedPreferencesUtils.instance == null) {
SharedPreferencesUtils.instance = new SharedPreferencesUtils(context);
}
}
}
public Object getData(String s, Object o) {
String simpleName = o.getClass().getSimpleName();
if ("Integer".equals(simpleName)) {
return SharedPreferencesUtils.mSharedPreferences.getInt(s, (int)o);
}
if ("Boolean".equals(simpleName)) {
return SharedPreferencesUtils.mSharedPreferences.getBoolean(s, (boolean)o);
}
if ("String".equals(simpleName)) {
return SharedPreferencesUtils.mSharedPreferences.getString(s, (String)o);
}
if ("Float".equals(simpleName)) {
return SharedPreferencesUtils.mSharedPreferences.getFloat(s, (float)o);
}
if ("Long".equals(simpleName)) {
return SharedPreferencesUtils.mSharedPreferences.getLong(s, (long)o);
}
return null;
}
public <T> T getObject(String s) {
final ByteArrayInputStream byteArrayInputStream =
new ByteArrayInputStream(
Base64.decode(SharedPreferencesUtils.mSharedPreferences.getString(s, "")
.getBytes(), 0));
try
{
return (T)new ObjectInputStream(byteArrayInputStream).readObject();
}
catch (ClassNotFoundException ex)
{
return null;
}
catch (IOException ex2)
{
return null;
}
}
public void removeData(String s) {
final SharedPreferences.Editor edit = SharedPreferencesUtils.mSharedPreferences.edit();
edit.remove(s);
edit.apply();
}
public void saveData(String s, Object o) {
String simpleName = o.getClass().getSimpleName();
SharedPreferences.Editor edit = SharedPreferencesUtils.mSharedPreferences.edit();
if ("Integer".equals(simpleName)) {
edit.putInt(s, (int)o);
}
else if ("Boolean".equals(simpleName)) {
edit.putBoolean(s, (boolean)o);
}
else if ("String".equals(simpleName)) {
edit.putString(s, (String)o);
}
else if ("Float".equals(simpleName)) {
edit.putFloat(s, (float)o);
}
else if ("Long".equals(simpleName)) {
edit.putLong(s, (long)o);
}
edit.apply();
}
public void saveObject(String s, Object o) {
if (o instanceof Serializable) {
SharedPreferences.Editor edit = SharedPreferencesUtils.mSharedPreferences.edit();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
new ObjectOutputStream(byteArrayOutputStream).writeObject(o);
edit.putString(s, new String(Base64.encode(byteArrayOutputStream.toByteArray(), 0)));
edit.apply();
return;
}
catch (IOException ex) {
ex.printStackTrace();
return;
}
}
Logger.e("对象必须实现序列号接口" );
}
public void removeObject(String s) {
final SharedPreferences.Editor edit = SharedPreferencesUtils.mSharedPreferences.edit();
edit.remove(s);
edit.apply();
}
}
三、调用例子:
SharedPreferencesUtils.init(this);
mAppSetting = SharedPreferencesUtils.getInstance().getObject("AppSetting");
if (mAppSetting == null)
{
mAppSetting = new AppSettingBean();
SharedPreferencesUtils.getInstance().saveObject("AppSetting", mAppSetting);
}

1万+

被折叠的 条评论
为什么被折叠?



