SharedPreferences 的用法

SharedPreferences存儲類效率分析

SharedPreferences是Android平臺上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態,一般在Activity中重載窗口狀態onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平臺常規的Long長整形、Int整形、String字符串型的保存,它是什麼樣的處理方式呢?

  SharedPreferences類似過去Windows系統上的ini配置文件,但是它分爲多種權限,可以全局共享訪問,android123提示最終是以xml方式來保存,整體效率來看不是特別的高,對於常規的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義文件格式。xml 處理時Dalvik會通過自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對於內存資源佔用比較好。

--------------------------------------------------------------------------------------------------------------------------

 

 

Android數據存取之Preferences

這種方式應該是用起來最簡單的Android讀寫外部數據的方法了。他的用法基本上和 J2SE(java.util.prefs.Preferences)中的用法一樣,以一種簡單、透明的方式來保存一些用戶個性化設置的字體、顏色、位置等參數信息。一般的應用程序都會提供“設置”或者“首選項”的這樣的界面,那麼這些設置最後就可以通過Preferences來保存,而程序員不需要知道它到底以什麼形式保存的,保存在了什麼地方。當然,如果你願意保存其他的東西,也沒有什麼限制。只是在性能上不知道會有什麼問題。

在Android系統中,這些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME /shared_prefs 目錄下。

數據讀取

String PREFS_NAME = "Note.sample.roiding.com";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
String hello = settings.getString("hello", "Hi");
這段代碼中:
  • SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    通過名稱,得到一個SharedPreferences,顧名思義,這個Preferences是共享的,共享的範圍據現在同一個Package中,這裏面說所的Package和Java裏面的那個Package不同,貌似這裏面的Package是指在AndroidManifest.xml文件中:
     <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.roiding.sample.note"
    android:versionCode="1"
    android:versionName="1.0.0">

    這裏面的package。根據我目前的實驗結果看,是這樣的,歡迎指正。後面的那個int是用來聲明讀寫模式,先不管那麼多了,暫時就知道設爲0(android.content.Context.MODE_PRIVATE)就可以了。

  • boolean silent = settings.getBoolean(”silentMode”, false);
    獲得一個boolean值,這裏就會看到用Preferences的好處了:可以提供一個缺省值。也就是說如果Preference中不存在這個值的話,那麼就用後面的值作爲返回指,這樣就省去了我們的if什麼什麼爲空的判斷。

數據寫入

String PREFS_NAME = "Note.sample.roiding.com";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", true);
editor.putString("hello", "Hello~");
editor.commit();

有了上面數據讀取的代碼,這裏面的就容易理解了,只是別忘了最後的commit();

注意:

訪問接口和優先修改數據,並由getSharedPreferences(String,int)返回數據,爲了統一設置參數,有一個單例類供所有的客戶端共享.修改參數必須通過一個SharedPreferences.Editor對象,在存儲他們時,以確保參數值有統一的狀態和控制
目前此類不支持多線程,
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章