SharedPreferences: 通過鍵值對形式保存簡單的,私有的數據.
存儲的類型是基本數據類型,所以常用來存儲應用的配置信息,用戶設置的參數等數據不大的數據;
數據存儲的方式是以"鍵值對的"形式
SharedPreferences存儲的數據的路徑是/data/data/應用程序的包名/shared_prefs的目錄下
在這個目錄下,SharedPreferences的數據是以xml文件格式存儲的,所以SharedPreferences的讀寫就是對xml文件的解析和寫入的過程.
讀數據
想要用SharedPreferences讀數據,首先要獲得一個SharedPreferences的對象,有兩種方法:
第一,直接在用上下文的對象調用getSharedPreferences();如果一個Activity需要使用多個SharedPreferences的文件,
使用這個方法,這個方法的第一個參數是SharedPreferences的文件的文件名即XML的文件名;
第二, 也是用上下文的對象調用getPreferences();如果一個Activity只是需要使用一個SharedPreferences的文件的話,可以使用這個方法,這個方法沒有參數,調用這個方法後,可以在/data/data/應用程序的包名/shared_prefs的目錄下找到一個和當前的Activity的類名一樣的XML文件的文件名;
寫數據:
寫數據可以分四步
1,用getSharedPreferences();或者getPreferences()方法得到一個SharedPreferences對象.
2. 調用SharedPreferences對象的edit()方法,獲得一個SharedPreferences.Editor的內部類的對象
3.調用Editor對象的putInt(),putString();等方法,第一個參數爲key(鍵),第二個value(值)
4,使用Editor對象的commit()方法,提交修改,否則,無法寫入數據
下面是一個簡單的案列
簡單的說明下getSharedPreferences()的兩個參數
參數1:保存數據文件的名稱
參數2:數據的標記
MODE_PRIVATE:數據只能被本應用程序讀和寫 這是是我們經常使用的
MODE_APPEND:新內容能追加到原內容之後
MODE_WORLD_READABLE:能被其他程序讀 但不能寫
MODE_WORLD_WRITEABLE:能被其他程序讀和寫
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void OnclickBtn(View v){
switch (v.getId()) {
case R.id.btn_save://保存數據
/**
* 參數1:保存數據文件的名稱
*
* 參數2:數據的標記
*
* MODE_PRIVATE:數據只能被本應用程序讀和寫
* MODE_APPEND:新內容能追加到原內容之後
* MODE_WORLD_READABLE:能被其他程序讀 但不能寫
* MODE_WORLD_WRITEABLE:能被其他程序讀和寫
*
*
* <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<float name="floatType" value="1.0" />
<int name="intType" value="34" />
<string name="stringType">你好</string>
<boolean name="booleanType" value="true" />
<long name="longType" value="123" />
</map>
*
* 保存的路徑:data/data/程序包名/shard_prefs/參數1.xml
*
*/
// SharedPreferences preferences = getSharedPreferences("info", Context.MODE_PRIVATE);
SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
//獲取編輯者對象
Editor editor = preferences.edit();
editor.putBoolean("booleanType", true);
editor.putFloat("floatType", 1.0f);
editor.putInt("intType", 34);
editor.putLong("longType", 123l);
editor.putString("stringType", "你好");
//要提交數據
editor.commit();
break;
case R.id.btn_get://獲取數據
//SharedPreferences preferences2 = getSharedPreferences("info", Context.MODE_PRIVATE);
SharedPreferences preferences2 = getPreferences(Context.MODE_PRIVATE);
boolean b1 = preferences2.getBoolean("booleanType", false);
int int1 =preferences2.getInt("intType", -1);
String str = preferences2.getString("stringType", "defauls");
String str1 = preferences2.getString("stringType1", "defauls");
Log.i("==SharedPreferences==", b1+" "+int1+" "+str+" "+str1);
break;
default:
break;
}
}