在Android开发中,如果我们要本地保存一个字符串之类的较小的信息,往往会想到使用共享参数。这里具体说明一下共享参数的使用方法。
首先要获取共享参数对象
SharedPreferences sps = getSharedPreferences("share", Context.MODE_PRIVATE);
这个名称是固定的,对于app中同一类的存储信息最好用一个名称。我们也可以使用一个类来管理所有的名称。简单一些把名称全部写成静态常量,但是这样如果信息量大会影响性能。当然也可以用WeakHashMap保存。之后我会对于类似网络请求地址管理,相关名称的管理专门写一个博客介绍。
存储数据
SharedPreferences.Editor editor = sps.edit();
editor.putString("name","Mr Lee");
editor.putInt("age",30);
editor.putBoolean("married",true);
editor.putFloat("weight",100f);
editor.commit();
读取数据
String name = sps.getString("name","");
int age = sps.getInt("age",0);
boolean married = sps.getBoolean("married",false);
float weight = sps.getFloat("weight",0);
介绍完共享参数的基本用法,我这里提供一套完整的共享参数的封装类,供大家参考。
/**
* SharePreference工具类
* @author WaterWood
*/
public class SpUtil {
private static SpUtil mInstance;
private static SharedPreferences sp;
private static SharedPreferences.Editor editor;
private static final String LONG_WAY = "longway.pre";
/**
* 获取单例对象
* @param context
* @return
*/
public static SpUtil getInstance(Context context){
if (mInstance == null){
synchronized (SpUtil.class){
if (mInstance == null){
mInstance = new SpUtil(context);
}
}
}
return mInstance;
}
/**
* 私有构造方法
* @param context
*/
private SpUtil(Context context) {
sp = context.getSharedPreferences(LONG_WAY,Context.MODE_PRIVATE);
editor = sp.edit();
}
/**
* 写入int类型数据
* @param key
* @param value
*/
public void putInt(String key,int value){
editor.putInt(key,value);
editor.commit();
}
/**
* 读取int类型数据
* @param key
* @param defaultValue
* @return
*/
public int getInt(String key,int defaultValue){
return sp.getInt(key,defaultValue);
}
/**
* 写入String类型数据
* @param key
* @param value
*/
public void putString(String key,String value){
editor.putString(key,value);
editor.commit();
}
/**
* 读取String类型数据
* @param key
* @param defaultValue
* @return
*/
public String getString(String key,String defaultValue){
return sp.getString(key,defaultValue);
}
/**
* 写入boolean类型数据
* @param key
* @param value
*/
public void putBoolean(String key,boolean value){
editor.putBoolean(key,value);
editor.commit();
}
/**
* 读取boolean类型数据
* @param key
* @param defaultValue
* @return
*/
public boolean getBoolean(String key,boolean defaultValue){
return sp.getBoolean(key,defaultValue);
}
/**
* 写入long类型数据
* @param key
* @param value
*/
public void putLong(String key,long value){
editor.putLong(key,value);
editor.commit();
}
/**
* 读取long类型数据
* @param key
* @param defaultValue
* @return
*/
public long getLong(String key,long defaultValue){
return sp.getLong(key,defaultValue);
}
/**
* 写入float类型数据
* @param key
* @param value
*/
public void putFloat(String key,float value){
editor.putFloat(key,value);
editor.commit();
}
/**
* 读取float类型数据
* @param key
* @param defaultValue
* @return
*/
public float getFloat(String key,float defaultValue){
return sp.getFloat(key,defaultValue);
}
}
使用
//存储值
SpUtil.getInstance(this).putString(SpName.TOKEN,loginBean.getData().getToken());
//获取值
SpUtil.getInstance(activity).getString(SpName.TOKEN,"")