除了SQLite數據庫外,SharedPreferences也是一種輕型的數據存儲方式,它的本質是基於XML文件存儲key-value鍵值對數據,一般用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對象自己只能獲取數據而不支持存儲和修改,存儲修改是經過Editor對象實現。實現SharedPreferences存儲的步驟以下:html
1、根據Context獲取SharedPreferences對象web
2、利用edit()方法獲取Editor對象。數據庫
3、經過Editor對象存儲key-value鍵值對數據。ide
4、經過commit()方法提交數據。this
具體實現代碼以下:spa
1 publicclass MainActivity extends Activity {
2 @Override
3 publicvoid onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.main);
6
7 //獲取SharedPreferences對象
8 Context ctx = MainActivity.this;
9 SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
10 //存入數據
11 Editor editor = sp.edit();
12 editor.putString("STRING_KEY", "string");
13 editor.putInt("INT_KEY", 0);
14 editor.putBoolean("BOOLEAN_KEY", true);
15 editor.commit();
16
17 //返回STRING_KEY的值
18 Log.d("SP", sp.getString("STRING_KEY", "none"));
19 //若是NOT_EXIST不存在,則返回值爲"none"
20 Log.d("SP", sp.getString("NOT_EXIST", "none"));
21 }
22 }
這段代碼執行事後,即在/data/data/com.test/shared_prefs目錄下生成了一個SP.xml文件,一個應用能夠建立多個這樣的xml文件。如圖所示: code
SP.xml文件的具體內容以下:orm
1 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
2 <map>
3 <string name="STRING_KEY">string</string>
4 <int name="INT_KEY" value="0"/>
5 <boolean name="BOOLEAN_KEY" value="true"/>
6 </map>
在程序代碼中,經過getXXX方法,能夠方便的得到對應Key的Value值,若是key值錯誤或者此key無對應value值,SharedPreferences提供了一個賦予默認值的機會,以此保證程序的健壯性。以下圖運行結果中由於並沒有值爲"NOT_EXIST"的Key,因此Log打印出的是其默認值:「none」。在訪問一個不存在key值這個過程當中,並沒有任何異常拋出。 xml
SharedPreferences對象與SQLite數據庫相比,免去了建立數據庫,建立表,寫SQL語句等諸多操做,相對而言更加方便,簡潔。可是SharedPreferences也有其自身缺陷,好比其職能存儲boolean,int,float,long和String五種簡單的數據類型,好比其沒法進行條件查詢等。因此不論SharedPreferences的數據存儲操做是如何簡單,它也只能是存儲方式的一種補充,而沒法徹底替代如SQLite數據庫這樣的其餘數據存儲方式。htm
相關連接:
Android數據的四種存儲方式SharedPreferences、SQLite、Content Provider和File (一)——總覽
Android數據的四種存儲方式SharedPreferences、SQLite、Content Provider和File (二)——SQLite
Android數據的四種存儲方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider