一、SharedPreferences简介
Android提供了多种存储方式,其中就包括了非常常用的SharedPreferences。SharedPreferences是一种轻量级的存储机制,无论是存数据和取数据都十分快速,而其的局限性也就是在“轻量”两个字当中。SharedPreferences中存储的数据格式简单,数据量少,而且SharedPreferences得数据存储于本地,所以共享性很低。
二、SharedPreferences的存储路径
1、SharedPreferences作为一种本地存储方式,不具备共享性。但是,多个程序之间可以互相读取SharedPreferences的数据。
2、SharedPreferences的存储路径为:data/data/packageName/shared_prefs目录下,以.xml的形式存储。
三、SharedPreferences的相关初始化的存储方式
SharedPreferences存储数据时,是以键值对的形式存取的。
1、初始化SharedPreferences
private SharedPreferences sharedPreferences;
sharedPreferences = getSharedPreferences("sharedPreferencesName", Context.MODE_PRIVATE);
2、初始化编辑器
SharedPreferences.Editor editor = sharedPreferences.edit();
3、保存(提交)数据
editor.putBoolean("booleanName", false);//Boolean类型的数据,booleanName为键名,false为键值。(下文同理)
editor.putFloat("floatName", 0.1f); //float类型
editor.putInt("intName", 1); //int类型
editor.putLong("longName", 1); //long类型
editor.putString("stringName", "test") //String类型
editor.commit(); //提交(保存)数据
4、获取数据
sharedPreferences.getBoolean("booleanName", false);
sharedPreferences.getFloat("floatName", 0);
sharedPreferences.getInt("intName", 0);
sharedPreferences.getLong("longName", 0);
sharedPreferences.getString("stringName", "");
5、删除数据
(1)删除单条数据
editor.remove("booleanName");
editor.remove("floatName");
editor.remove("intName");
editor.remove("longName");
editor.remove("stringName");
(2)清除所有数据
editor.clear().commit();
6、删除SharedPreferences
File file = new File("/data/data/" + getPackageName()
+ "/shared_prefs", "sharedPreferencesName");
if (file.exists()) {
file.delete();
}
四、SharedPreferences的工具类编写
package com.jyy.CSDN;
import android.content.Context;
import android.content.SharedPreferences;
import java.io.File;
import java.util.Map;
/**
* Author: JiangYY
* Date: 2016/5/12 20:02
* Describle: TODO SharePreference的工具类:对SharePreference的操作进行统一管理,下文中,声明了几个常用操作,其他的同理可得。
*/
public class SharePreferenceHelper {
private Context context;
private final String sharePreferencePath = "/data/data/" + context.getPackageName()
+ "/shared_prefs";
private String testsharePreferenceName = "testsharePreference"; //测试用的SharePreference
private String testKey = "testKey"; //测试字段
public SharePreferenceHelper(Context context) {
this.context = context;
}
/**
* 新建SharePreference
*
* @param fileName 所添加的SharePreference的文件名
* @param map 所添加的数据集合
* @return
*/
private boolean saveSharePreference(String fileName, Map<String, Object> map) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object object = entry.getValue();
if (object instanceof String) {
editor.putString(key, (String) object);
}
if (object instanceof Integer) {
editor.putInt(key, (Integer) object);
}
if (object instanceof Float) {
editor.putFloat(key, (Float) object);
}
if (object instanceof Long) {
editor.putLong(key, (Long) object);
}
if (object instanceof Boolean) {
editor.putBoolean(key, (Boolean) object);
}
}
editor.commit();
return true;
}
/**
* 清除SharedPreferences中所有数据
*
* @param fileName 被清除数据的SharedPreferences文件名
*/
private void clearSharedPreferences(String fileName) {
SharedPreferences preferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear().commit();
}
/**
* 删除SharePreference文件
*
* @param fileName 被删除SharePreference的文件名
*/
private void deleteSharedPreferences(String fileName) {
File file = new File(sharePreferencePath, fileName);
if (file.exists()) {
file.delete();
}
}
/**
* 测试SharePreference中,假设字段确定
*
* @param data 待存储的数据
* @return
*/
private boolean saveTestData(String data) {
SharedPreferences sharedPreferences = context.getSharedPreferences(testsharePreferenceName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(testKey, data);
editor.commit();
}
/**
* 删除测试SharedPreferences中指定字段数据
*
* @param keyName 字段名
*/
private void deleteTestData(String keyName) {
SharedPreferences sharedPreferences = context.getSharedPreferences(testsharePreferenceName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(keyName);
}
}