標籤:android android開發架構 annotations sharedpreferences
轉載請標明出處:
http://blog.csdn.net/developer_jiangqq/article/details/49583487
本文出自:【江清清的部落格】
(一).前言:
前面我們已經對於AndroidAnnotations使用Adapters和lists做了講解,今天我們開始具體學習一下使用DI架構SharedPreferencesHelpers的使用,SharedPreferencesHelpers允許我們可以使用Android SharedPreferences.
FastDev4Android架構項目地址:https://github.com/jiangqqlmj/FastDev4Android
(二).定義preferences:
首先你需要使用建立一個@SharedPref註解的介面來進行定義SharedPreferences:
@SharedPrefpublic 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上面是這個情況。
@EActivitypublic classMyActivity extends Activity { @Pref MyPrefs_ myPrefs; // ... }你可以如下進行使用:
// Simple editmyPrefs.name().put("John"); // Batch editmyPrefs.edit() .name() .put("John") .age() .put(42) .apply(); // Preferenceclearing:myPrefs.clear(); // Check if a valueexists:boolean nameExists =myPrefs.name().exists(); // Reading a valuelong lastUpdated =myPrefs.lastUpdated().get(); // Reading a valueand providing a fallback default valuelong now =System.currentTimeMillis();long lastUpdated =myPrefs.lastUpdated().getOr(now);(三).預設資源值:
自AndroidAnnotations3.0起,現在我們可以使用@DefaultRes來從Android Resources中注入一個預設值:
@SharedPrefpublic 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.使用執行個體如下:
@SharedPrefpublic 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 valuesthis.getPreferenceManager().setSharedPreferencesName(PREF_NAME); // Opening thelayoutaddPreferencesFromResource(R.xml.prefs);
到此位置關於AndroidAnnotations最佳實務SharedPreferences已經講解完,同時FastDev4Android項目已經添加配置了AndroidAnnotations架構,後期的架構項目中也會主要使用這個DI架構,.歡迎大家去Github網站進行clone或者下載瀏覽:https://github.com/jiangqqlmj/FastDev4Android 同時歡迎大家star和fork整個開源快速開發架構項目~
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
【FastDev4Android架構開發】AndroidAnnnotations注入架構使用之最佳實務SharedPreferences(十七)