在Android應用開發中,需要經常保存一些用戶對於自己軟件的設置,所以,Android平臺給我們提供了一個SharedPreferences類,它是一個輕量級應用程序內部輕量級的存儲方案,特別適合用於保存軟件配置參數
SharedPreferences:
1、是一種輕型的數據存儲方式
2、本質是基於XML文件存儲key-value鍵值對數據
3、Android中常用來存儲一些簡單的配置文件
其實,SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲和修改是通過Editor對象實現的。
具體的實現步驟:
實現SharedPreferences存儲步驟:
(1)獲取SharedPreferences對象
獲取SharedPreferences對象的兩種方法:
1、使用Activity的getSharedPreferences()//這個方法也是比較常用的
2、使用PreferenceManager中的getDefaultSharedPreferences()方法,不能自己定義XML文件名和文件權限。
(2)獲取SharedPreferences.Editor對象(因爲SharedPreferencesd對象不能直接進行存儲,存儲實現通過Editor對象實現)
(3)通過Editor接口的putXxxx方法保存
(4)通過Editor.commit提交//這個一定要記得,不然數據保存提交不上
這裏我做了個簡單的demo,就是兩個Button一個存入數據,一個顯示數據。
效果圖:
源碼如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initEvent();
}
/**
* 初始化控件
*/
private void initView() {
logdata = (Button) findViewById(R.id.log_data);
readdata = (Button) findViewById(R.id.read_data);
}
/**
* 建立點擊事件
*/
private void initEvent() {
logdata.setOnClickListener(this);
readdata.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.log_data:
putData();
break;
case R.id.read_data:
getData();
break;
}
}
/**
* 顯示存入的記錄
*/
private void getData() {
Toast.makeText(
this,
"名字是" + preferences.getString("name", "") + ",年齡是"
+ preferences.getInt("age", 0), Toast.LENGTH_SHORT)
.show();
}
/**
* 通過按鍵存入數據
*/
private void putData() {
/*
* SharedPreferences是一個接口,程序是無法創建SharedPreferences實例的,可以通過Context.
* getSharedPreferences(String name,int mode)來得到一個SharedPreferences實例
* name:是指文件名稱,不需要加後綴.xml,系統會自動爲我們添加上。一般這個文件存儲在/data/data/<package
* name>/shared_prefs下(這個面試常問到) mode:是指定讀寫方式,其值有三種,分別爲:
* Context.MODE_PRIVATE:指定該SharedPreferences數據只能被本應用程序讀、寫
* Context.MODE_WORLD_READABLE:指定該SharedPreferences數據能被其他應用程序讀,但不能寫
* Context.MODE_WORLD_WRITEABLE:指定該SharedPreferences數據能被其他應用程序讀寫。
*/
preferences = getSharedPreferences("mydata", MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString("name", "王五");
editor.putInt("age", 20);
// commit()提交
editor.commit();
Toast.makeText(this, "存入數據成功", Toast.LENGTH_SHORT).show();
}
希望對初學者有幫助~~