安卓學習之路之數據存儲方式之SharedPreferences

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;
		}
	}


發佈了41 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章