【FastDev4Android架構開發】AndroidAnnnotations注入架構使用之最佳實務SharedPreferences(十七)

來源:互聯網
上載者:User

標籤: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(十七)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.