SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。
其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下,一个简单的存储代码如下:
SharedPreferences sharedPreferences = getSharedPreferences("mysp", Context.MODE_PRIVATE); //私有数据
在上述目录下生成mysp.xml文件
如果你想要删除通过SharedPreferences产生的文件,可以通过以下方法:
File file= new File("/data/data/"+getPackageName().toString()+"/shared_prefs","mysp.xml");
if(file.exists())
file.delete();
public class SPUtil { /**
* 获取sp对象
* @param context
* @return
*/
public static SharedPreferences getSharedPreferences(Context context) {
SharedPreferences sp = context.getSharedPreferences("config",
Context.MODE_PRIVATE);
return sp;
} /**
* 从sp获取string值
* @param context
* @param key
* @return
*/
public static String getString(Context context, String key) {
SharedPreferences sp = getSharedPreferences(context);
String result = sp.getString(key, null);
return result;
} /**
* 从sp获取int值
* @param context
* @param key
* @return
*/
public static int getInt(Context context, String key) {
SharedPreferences sp = getSharedPreferences(context);
int result = sp.getInt(key, 0);
return result;
} /**
* 从sp获取boolean值
* @param context
* @param key
* @return
*/
public static boolean getBoolean(Context context, String key,
boolean defaultValue) {
SharedPreferences sp = getSharedPreferences(context);
boolean result = sp.getBoolean(key, defaultValue);
return result;
} /**
* 存储数据到sp中,仅限于string int boolean
* @param context
* @param key
* @param value
*/
public static void put(Context context, String key, Object value) {
SharedPreferences sp = getSharedPreferences(context);
Editor edit = sp.edit();
if (value instanceof String) {
edit.putString(key, (String) value);
} else if (value instanceof Integer) {
edit.putInt(key, (Integer) value);
} else if (value instanceof Boolean) {
edit.putBoolean(key, (Boolean) value);
}
edit.commit();
} /**
* 存储已读新闻id到sp中,
* @param context
* @param key
* @param List<Integer> ids
*/
public static void writeReadNews(Context context, String key,
List<Integer> ids) {
SharedPreferences sp = getSharedPreferences(context);
Editor edit = sp.edit();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ids.size(); i++) {
sb.append(ids.get(i) + ":");
}
// 去除最后一个":"
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
edit.putString(key, sb.toString());
edit.commit();
} /**
* 存储显示新闻频道id到sp中,
* @param context
* @param key
* @param List<Integer> ids
*/
public static void writeShowNewsChannel(Context context, String key,
List<Integer> ids) {
SharedPreferences sp = getSharedPreferences(context);
Editor edit = sp.edit();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ids.size(); i++) {
sb.append(ids.get(i) + ":");
}
// 去除最后一个":"
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
edit.putString(key, sb.toString());
edit.commit();
} /**
* 从sp获取已读新闻id集合
*
* @param context
* @param key
* @return ArrayList<Integer>
*/
public static ArrayList<Integer> getReadNewsIds(Context context, String key) {
SharedPreferences sp = getSharedPreferences(context);
String ids = sp.getString(key, null);
ArrayList<Integer> readIds = new ArrayList<Integer>();
if (ids != null) {
String[] split = ids.split(":");
for (int i = 0; i < split.length; i++) {
readIds.add(Integer.valueOf(split[i]));
}
}
return readIds;
}
}