## (一).前言:
前面我們已經對于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最新版本側滑界面效果(三十八)