标签:
Esperandro简介
esperandro库通过识别已有的键值对以及相应的类型来帮助开发者使用SharedPreferences。并用于每一个使用了SharedPreference命名方法的preferences数据,这样既安全又容易。esperandro使用注释处理器在编译时生成一个类来定义接口。当以后存储和访问perferences数据时,就会使用这个类。
官网 http://dkunzler.github.io/esperandro/
添加 jar包 或者依赖
eclipse里要麻烦一些 多配置一下 跟ButterKnife一样 参考 http://blog.csdn.net/chenyufeng1991/article/details/46900395
新建接口 继承 SharedPreferenceActions @SharedPreferences 中的name就是 sp文件夹中的文件名
1 @SharedPreferences(name="setting",mode=SharedPreferenceMode.PRIVATE) 2 public interface SettingSP extends SharedPreferenceActions { 3 4 int themeValue(); 5 void themeValue(int themeValue); 6 7 String strValue(); 8 void strValue(String strValue); 9 10 boolean boolValue(); 11 void boolValue(boolean boolValue); 12 13 }
设置需要存入的值 ,支持 int, long, float, boolean, String and Set<String>.
默认值 为
int - -1 long - -1l float - -1.0f boolean - false String - "" (empty String) Set<String> - null
如果想要设置默认值 在上方加入@Default进行设置 在类型前面加入 of 进行配置
@Default(ofInt=1) int themeValue(); void themeValue(int themeValue); @Default(ofString="hehe") String strValue(); void strValue(String strValue); @Default(ofBoolean=true) boolean boolValue(); void boolValue(boolean boolValue);
取得 实例 SettingSP.class 就是继承 SharedPreferenceActions 的接口
Esperandro.getPreferences(Class<T> preferenceClass, Context context)
SettingSP settingSP= Esperandro.getPreferences(SettingSP.class, mContext);
有了实例就能 获取和设置 值 了,这样直接获取的值都是一开始设置的默认值 ,而且data/data文件sp文件夹也不会生成的,
String str=settingSP.strValue(); int themeValue=settingSP.themeValue(); boolean bool=settingSP.boolValue();
设置值的时候 sp文件夹里面的setting 文件才会生成
settingSP.strValue("haha");
settingSP.themeValue(666);
实际情况中 可能不止一个这样的接口 而且在每个activity里面自己生成实例也很麻烦 可以在BaseActivity 里面这么做
1 // SharedPreferences 2 protected <P> P getSharedPreferences(Class<P> spClass) { 3 return Esperandro.getPreferences(spClass, this); 4 } 5 6 public AccountSharedPreferences getAccountSharedPreferences() { 7 return getSharedPreferences(AccountSharedPreferences.class); 8 } 9 public SettingsSharedPreferences getSettingsSharedPreferences() { 10 return getSharedPreferences(SettingsSharedPreferences.class); 11 } 12 public LocationSharedPreferences getLocationSharedPreferences() { 13 return getSharedPreferences(LocationSharedPreferences.class); 14 }
之后在activity里面 要什么接口就直接 调用下面3中 该接口的get方法就行了 获取值和设置值的方法如下
String str=getSettingsSharedPreferences().strValue();
getSettingsSharedPreferences().themeValue(666);
标签:
原文地址:http://www.cnblogs.com/demon9/p/5600058.html