Android缓存(二)
接着上一篇文章,我们要存储数据,选择SharedPreferences,放到这个LoginDataHelper里面封装,仍然有些冗余,没关系,在引入一个新的ServiceConfigManager.java去封装即可。
ServiceConfigManager也写成单例,之后声明一个私有的存储信息tag,书写get,set,方法,SharedPreferences就被封装好了。
最后举个例子,比如你要存储的信息叫STUDENT_USER_INFO,那么示例代码示例如下:
public class ServiceConfigManager{
private String mstrSharedPreferenceName = null;
private SharedPreferences mshardPreferences = null;
private static Context context = null;
private static final String STUDENT_USER_INFO = "STUDENT_USER_INFO";
//获得单例
public static ServiceConfigManager getInstance(Context context) {
ServiceConfigManager.context = context;
ServiceConfigManager cm = InnerConfigManager.instance;
return cm;
}
private static class InnerConfigManager {
private static final ServiceConfigManager instance = new ServiceConfigManager(context);
}
private ServiceConfigManager(Context context) {
mstrSharedPreferenceName = new String(context.getPackageName() + "_preferences");
mshardPreferences = context.getSharedPreferences(mstrSharedPreferenceName,
Context.MODE_MULTI_PROCESS);
}
public static ServiceConfigManager getInstance(Context context) {
ServiceConfigManager.context = context;
ServiceConfigManager cm = InnerConfigManager.instance;
return cm;
}
public void setStringValue(String key,
String value) {
SharedPreferences.Editor editor = getSharedPreference().edit();
editor.putString(key, value);
editor.commit();
}
//登录服务器后返回的用户数据
public void setLoginDataInfo(String data) {
setStringValue(STUDENT_USER_INFO, data);
}
public String getLoginDataInfo() {
return getStringValue(STUDENT_USER_INFO, "");
}
}
简单的封装了一下SharedPreferences,这样每次都只需调用 ServiceConfigManager.getInstance获取manager的实例,之后调用get,set方法实现存储即可。