## (一).前言:
前面我们已经对于AndroidAnnotations使用Adapters和lists做了讲解,今天我们开始具体学习一下使用DI框架SharedPreferencesHelpers的使用,SharedPreferencesHelpers允许我们可以使用Android SharedPreferences.
FastDev4Android框架项目地址:[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android)
## (二).定义preferences:
首先你需要使用创建一个@SharedPref注解的接口来进行定义SharedPreferences:
~~~
@SharedPref
public interfaceMyPrefs {
// The field name will have defaultvalue "John"
@DefaultString("John")
String name();
// The field age will have defaultvalue 42
@DefaultInt(42)
int age();
// The field lastUpdated will havedefault value 0
long lastUpdated();
}
~~~
基于这个规范,AndroidAnnotations会构建一个SharedPreferencesHelper并且会得到一个相同名字外加一个下划线的类。然后你可以通过@Pref注解生成一个实例。
【注】字段的类型必须是编译生成的类,还不是源类。这仅仅是AndroidAnnotations上面是这个情况。
~~~
@EActivity
public classMyActivity extends Activity {
@Pref
MyPrefs_ myPrefs;
// ...
}
~~~
你可以如下进行使用:
~~~
// Simple edit
myPrefs.name().put("John");
// Batch edit
myPrefs.edit()
.name()
.put("John")
.age()
.put(42)
.apply();
// Preferenceclearing:
myPrefs.clear();
// Check if a valueexists:
boolean nameExists =myPrefs.name().exists();
// Reading a value
long lastUpdated =myPrefs.lastUpdated().get();
// Reading a valueand providing a fallback default value
long now =System.currentTimeMillis();
long lastUpdated =myPrefs.lastUpdated().getOr(now);
~~~
## (三).默认资源值:
~~~
@SharedPref
public interfaceMyPrefs {
@DefaultRes(R.string.defaultPrefName)
String resourceName();
@DefaultRes // uses'R.string.defaultPrefAge' to set default value
String defaultPrefAge();
}
~~~
## (四).preferencekey:
自AndroidAnnotations3.1起,现在可以通过StringResource的id来作为preferencekey而不是方法的名称。这样但preferences是一个xml文件的时候,就可以使用stringresourcekeys.使用实例如下:
~~~
@SharedPref
public interfaceMyPrefs {
@DefaultString(value = "John",keyRes = R.string.myPrefKey)
String name();
@DefaultRes(keyRes =R.string.myOtherPrefKey)
String defaultPrefAge();
}
~~~
## (五).作用域:
你可以通过设置下面值来控制访问权限:
* ACTIVITY.使用MyActivity_MyPrefs命名共享preference
* ACTIVITY_DEFAULT,默认权限MyActivity进行命名,Activity级别权限(可以通过activity.getPreferences()进行获取)
* APPLICATION_DEFAULT,应用级别默认SharedPreference或者UNIQUE,使用MyPrefs命名。
因此如果需要定义一个应用级别的preference,这样我们可以在应用中都共享这个preferences,那么我们需要进行如下定义:
~~~
@SharedPref(value=SharedPref.Scope.UNIQUE)
public interfaceMyPrefs {
...
~~~
## (六).使用PreferencesActivity:
Android PreferenceActvitiy和PreferenceFragment可以进行编辑我们上面注解生成的preferences。
~~~
@SharedPref(SharedPref.Scope.UNIQUE)
public interfaceMyPrefs {
...
}
public static StringPREF_NAME = "MyPrefs";
// in onCreate
// Using yourMyPrefs values
this.getPreferenceManager().setSharedPreferencesName(PREF_NAME);
// Opening thelayout
addPreferencesFromResource(R.xml.prefs);
~~~
到此位置关于AndroidAnnotations最佳实践SharedPreferences已经讲解完,同时FastDev4Android项目已经添加配置了AndroidAnnotations框架,后期的框架项目中也会主要使用这个DI框架,.欢迎大家去Github站点进行clone或者下载浏览:[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android) 同时欢迎大家star和fork整个开源快速开发框架项目~
- 前言
- Android快速开发框架介绍(一)
- Android首页图片自动无限循环轮播Gallery+FlowIndicator(二)
- Android 列表下拉刷新组件PullToRefreshListView使用(三)
- Android 数据缓存器ACache的详解和使用(四)
- Android崩溃异常捕捉CustomCrash,提升用户体验(五)
- Android实现沉浸式状态栏(六)
- AndroidAnnnotations注入框架介绍和Android Studios基本配置(七)
- AndroidAnnnotations注入框架的工作原理(八)
- AndroidAnnnotations注入框架使用之注入组件Components(九)
- AndroidAnnnotations注入框架使用之Injection标签详解(十)
- AndroidAnnnotations注入框架使用之事件绑定Event Binding(十一)
- AndroidAnnnotations注入框架使用之线程处理Threading(十二)
- AndroidAnnnotations注入框架使用之第三方框架集成RoboGuice(十三)
- AndroidAnnnotations注入框架使用之第三方框架集成Otto事件总线(十四)
- AndroidAnnnotations注入框架使用之第三方框架集成OrmLite(十五)
- AndroidAnnnotations注入框架使用之最佳实践之Adapters和lists(十六)
- AndroidAnnnotations注入框架使用之最佳实践SharedPreferences(十七)
- Android MVP开发模式详解(十九)
- 消息总线EventBus的基本使用(二十)
- 消息总线EventBus源码分析以及与Otto框架对比(二十一)
- 列表头生成带文本或者字母的图片开源库TextDrawable使用和详解(二十二)
- 重写WebView网页加载以及JavaScript注入详解(二十三)
- BaseAdapterHelper的基本使用介绍,让你摆脱狂写一堆Adapter烦恼(二十四)
- BaseAdapterHelper详解源码分析,让你摆脱狂写一堆Adapter烦恼(二十五)
- Volley完全解析之基础使用(二十六)
- Volley完全解析之进阶最佳实践与二次封装(二十七)
- RecyclerView完全解析,让你从此爱上它(二十八)
- RecyclerView完全解析之打造新版类Gallery效果(二十九)
- RecyclerView完全解析之结合AA(Android Annotations)注入框架实例(三十)
- RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
- CardView完全解析与RecyclerView结合使用(三十二)
- 神器ViewDragHelper完全解析,妈妈再也不担心我自定义ViewGroup滑动View操作啦~(三十三)
- 神器ViewDragHelper完全解析之详解实现QQ5.X侧滑酷炫效果(三十四)
- 实例解析之SwipeRefreshLayout+RecyclerView+CardView(三十五)
- HorizontalScrollView,Fragment,FragmentStatePagerAdapter打造网易新闻Tab及滑动页面效果(三十六)
- Android Design支持库TabLayout打造仿网易新闻Tab标签效果(三十七)
- 打造QQ6.X最新版本侧滑界面效果(三十八)