简介
存储方式:以键值对的形式存储在xml中
特点:轻量级
应用场景:应用中的配置、参数属性
存储路径:/data/data/package name/shared_prefs
使用步骤
-
存入数据
1、通过getSharedPreferences()获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("dongbo", MODE_PRIVATE);
2、通过Editor获取编辑器对象
SharedPreferences.Editor edit = sharedPreferences.edit();
3、以键值对的方式存储数据
edit.putString("ceshi", content);
4、提交修改数据
edit.apply();
-
读取数据
1、通过getSharedPreferences()获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("dongbo", MODE_PRIVATE);
2、通过getXXX存储类型类获取数据
sharedPreferences.getString("ceshi", "123");
//这里的123含义:若没有对应的key存在,则返回默认值
-
移除某条数据
apply()与commit()的区别
在开发过程中不论我们使用commit()还是apply()都是没有什么区别的
commit()是同步存储的过程,只有当内存和磁盘都储存完成才会做之后事情
applh()是异步存储的过程,存储到内存上是同步存储,但是存储到磁盘上的方式是属于异步的存储方式
下面是我的工具类
/**
* @Author: DongBo
* @Date: 2020/2/3 14:01
*/
public class SpUtil {
//存储的文件名
private static String SHARE_FILE_NAME = "project";
public static Context mContext;
/**
* 存储数据
*
* @param key
* @param obj 存储的类型
*/
public static void putData(String key, Object obj) {
SharedPreferences shp = mContext.getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
Editor editor = shp.edit();
if (obj instanceof String) {
editor.putString(key, (String) obj).commit();
} else if (obj instanceof Boolean) {
editor.putBoolean(key, (Boolean) obj).commit();
} else if (obj instanceof Integer) {
editor.putInt(key, (Integer) obj).commit();
} else if (obj instanceof Float) {
editor.putFloat(key, (Float) obj).commit();
} else if (obj instanceof Long) {
editor.putLong(key, (Long) obj).commit();
}
}
/**
* 读取数据
*
* @param key
* @param obj 默认值
* @return
*/
public static Object getData(String key, Object obj) {
try {
SharedPreferences sp = mContext.
getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
if (obj instanceof String) {
return sp.getString(key, (String) obj);
} else if (obj instanceof Boolean) {
return sp.getBoolean(key, (Boolean) obj);
} else if (obj instanceof Integer) {
return sp.getInt(key, (Integer) obj);
} else if (obj instanceof Float) {
return sp.getFloat(key, (Float) obj);
} else if (obj instanceof Long) {
return sp.getLong(key, (Long) obj);
}
return null;
} catch (Exception e) {
return null;
}
}
/**
* 清除某个key值所对应的值
*
* @param key
*/
public static void removeData(String key) {
SharedPreferences sp = mContext.
getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
sp.edit().remove(key).commit();
}
/**
* 清除所有数据
*/
public static void clearData() {
SharedPreferences sp = mContext.
getSharedPreferences(SHARE_FILE_NAME, Context.MODE_PRIVATE);
sp.edit().clear().commit();
}
}
若有不足,请大家指教
数据存储相关文章
Android数据存储之文件存储
Android数据存储之SharedPreferences
Android数据存储之SQLite存储