Android系統提供了5種方式用來存儲應用數據(application data),它們分別是SharedPreferences(共享參數),Internal Storage(內部存儲),External Storage(外部存儲),SQLite Databases(數據庫存儲),Network Connection(網絡存儲),能夠根據不一樣的情景使用相應的存儲方式。數據庫
下圖是從Android 5.0 官方文檔的Data Storage的部分截圖:服務器
從上圖可知SharedPreferences主要以鍵值對的形式存儲私有數據,Internam Storage主要是在手機的內存存儲私有數據,External Storage主要是在手機的擴展卡(SD卡、存儲卡)存儲公共數據,而SQLite Databases則是將具備數據結構的數據存儲到私有的數據庫中,同時NetWork Connection則是存儲數據到本身的服務器上。網絡
SharedPreferences 又名共享參數,它是一個輕量級的存儲類,適用於存儲少許的軟件配置參數信息,它是以XML文件的形式存儲數據,其中該文件保存在/data/data/包名/shared_pref目錄下。數據結構
查閱官方文檔,知ShredPreferences:app
根據以上可知 SharedPreferences是一個接口,它是使用單例模式建立對象,也就是在任什麼時候刻,在內存中都只有一個SharedPreferences對象。spa
SharedPreferences是一個接口,它的內部定義了兩個公共的內部接口:3d
SharedPreferences定義的方法:xml
SharedPreferences類的總體定義:對象
根據以上總結:blog
1.獲取SharedPreferences對象:
1)context.getSharedPreferences(String name,int mode) 返回一個SharedPreferences對象,能夠被同一應用程序下的其餘組件共享。
eg: SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);
name 爲SharedPreferences保存的數據所在的文件名稱,沒有後綴,而Mode爲存儲的模式,主要有四種:
可知Mode的值有四個(API 17),分別爲:
MODE_PRIVATE:私有
MODE_APPED:追加
MODE_ENABLE_WRITE_AHEAD_LOGGING:
MODE_MULTI_PROCESS:
其中MODE_WORLD_READABLE(全局讀)和MODE_WORLD_WRITEABLE(全局寫)已通過時了。
2)activity.getPreferences(int mode) 返回一個SharedPreferences對象,得到的對象只能在該activity中使用,其中保存的數據的文件名自動命名爲該activity的name,例如MainActivity.xml。
2.從SharedPreferences中保存數據和取數據。
其中取數據能夠直接使用sharedPreferences對象的getXXX()方法,如getInt(),getLong(),getString()等,參數爲鍵值對的鍵.
保存數據則是先獲取SharedPreferences的內部類Editor對象,這是一個編輯對象,而後使用 putXXX()方法,如putInt(),putLong(),putString()等,參數分別爲鍵值對的鍵和值,最後須要注意的是數據必須使用commit()或apply方法,才能成功保存。
eg:
SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);
SharedPreferences.Editor editor = sp.editor();
editor.putString("name","Tom");
editor.putInt("age",13);
editor.commit();
----------------------------------------------------------------------------------------
String name = sp.getString("name",null);
int age = sp.getInt("age",-1);
未完,待續。