SharedPreferences存儲類效率分析
SharedPreferences是Android平臺上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態(tài),一般在Activity中重載窗口狀態(tài)onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平臺常規(guī)的Long長整形、Int整形、String字符串型的保存,它是什么樣的處理方式呢?
SharedPreferences類似過去Windows系統(tǒng)上的ini配置文件,但是它分為多種權(quán)限,可以全局共享訪問,android123提示最終是以xml方式來保存,整體效率來看不是特別的高,對于常規(guī)的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義文件格式。xml處理時Dalvik會通過自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對于內(nèi)存資源占用比較好。
--------------------------------------------------------------------------------------------------------------------------
SharedPreferences 的用法
2個activity 之間的數(shù)據(jù)傳遞除了可以他通過intent來傳遞,還可以使用SharedPreferences來共享數(shù)據(jù)的方式
SharedPreferences 用法很簡單.
在A中
設(shè)置
- Editorsharedata=getSharedPreferences( "data" , 0 ).edit();
- sharedata.putString( "item" , "hellogetSharedPreferences" );
- sharedata.commit();
B中獲取
- SharedPreferencessharedata=getSharedPreferences( "data" , 0 );
- Stringdata=sharedata.getString( "item" , null );
- Log.v( "cola" , "data=" +data);
Android數(shù)據(jù)存取之Preferences
這種方式應(yīng)該是用起來最簡單的Android讀寫外部數(shù)據(jù)的方法了。他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一樣,以一種簡單、透明的方式來保存一些用戶個性化設(shè)置的字體、顏色、位置等參數(shù)信息。一般的應(yīng)用程序都會提供“設(shè)置”或者“首選項(xiàng)”的這樣的界面,那么這些設(shè)置最后就可以通過Preferences來保存,而程序員不需要知道它到底以什么形式保存的,保存在了什么地方。當(dāng)然,如果你愿意保存其他的東西,也沒有什么限制。只是在性能上不知道會有什么問題。
在Android系統(tǒng)中,這些信息以XML文件的形式保存在 /data/data/ PACKAGE_NAME /shared_prefs 目錄下。
數(shù)據(jù)讀取
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是共享的,共享的范圍據(jù)現(xiàn)在同一個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。根據(jù)我目前的實(shí)驗(yàn)結(jié)果看,是這樣的,歡迎指正。后面的那個int是用來聲明讀寫模式,先不管那么多了,暫時就知道設(shè)為0(android.content.Context.MODE_PRIVATE)就可以了。
-
boolean silent = settings.getBoolean(”silentMode”, false);
獲得一個boolean值,這里就會看到用Preferences的好處了:可以提供一個缺省值。也就是說如果Preference中不存在這個值的話,那么就用后面的值作為返回指,這樣就省去了我們的if什么什么為空的判斷。
數(shù)據(jù)寫入
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();
有了上面數(shù)據(jù)讀取的代碼,這里面的就容易理解了,只是別忘了最后的commit();
注意:
目前此類不支持多線程,
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
