做軟件開發應該都知道,很多軟件會有配置文件,裏面存放這程序運行當中的各個屬性值,由於其配置信息並不多,如果採用數據庫來存放並不划算,因爲數據庫連接跟操作等耗時大大影響了程序的效率,因此我們使用鍵值這種一一對應的關係來存放這些配置信息。SharedPreferences正是Android中用於實現這中存儲方式的技術。
SharedPreferences的使用非常簡單,能夠輕鬆的存放數據和讀取數據。SharedPreferences只能保存簡單類型的數據,例如,String、int等。一般會將複雜類型的數據轉換成Base64編碼,然後將轉換後的數據以字符串的形式保存在 XML文件中,再用SharedPreferences保存。
(1)使用Activity類的getSharedPreferences方法獲得SharedPreferences對象,其中存儲key-value的文件的名稱由getSharedPreferences方法的第一個參數指定。
(2)使用SharedPreferences接口的edit獲得SharedPreferences.Editor對象。
(3)通過SharedPreferences.Editor接口的putXxx方法保存key-value對。其中Xxx表示不同的數據類型。例如:字符串類型的value需要用putString方法。
(4)通過SharedPreferences.Editor接口的commit方法保存key-value對。commit方法相當於數據庫事務中的提交(commit)操作。
具體代碼的書寫流程爲:
A、存放數據信息
1、打開Preferences,名稱爲setting,如果存在則打開它,否則創建新的Preferences
SharedPreferences settings = getSharedPreferences(“setting”, 0);
2、讓setting處於編輯狀態
SharedPreferences.Editor editor = settings.edit();
3、存放數據
editor.putString(“name”,”ATAAW”);
editor.putString(“URL”,”ATAAW.COM”);
4、完成提交
editor.commit();
B、讀取數據信息
1、獲取Preferences
SharedPreferences settings = getSharedPreferences(“setting”, 0);
2、取出數據
String name = settings.getString(“name”,”默認值”);
String url = setting.getString(“URL”,”default”);
以上就是Android中SharedPreferences的使用方法,其中創建的Preferences文件存放位置可以在Eclipse中查看:
DDMS->File Explorer /<package name>/shared_prefs/setting.xml
主要代碼 具體如下(僅供參考):
在onCreate方法中調用restorePrefs()方法:
//讀取 功能的實現
private void restorePrefs() {
// TODO Auto-generated method stub
//SharedPreferences是一種輕量級的數據存儲方式.是以鍵值對來存儲應用程序的
//配置信息的一種方式,它只能存儲基本數據類型。
//聲明一個優先級設置 類型 settings,載入配置文件
SharedPreferences settings = getPreferences(BMI.MODE_PRIVATE);
//使用getXXX函數從優先級設置讀取不同類型的內容 得到優先級設置參數的內容
String pref_height = settings.getString(PREF_HEIGHT, "");
//此一句爲喚醒記憶語句
field_height.setText(pref_height);
field_weight.requestFocus();//設置焦點字段 到“體重”字段上 用戶只需直接輸入體重數字就可以了
}
//存儲 在Activity每次變暗,也就是離開當前屏幕時,記住設置的身高值 即 存儲優先級設置
protected void onPause()
{
super.onPause();
Log.v("BMI", "onPause1");
//獲得SharedPreferences對象
SharedPreferences settings = getPreferences(BMI.MODE_PRIVATE);
//獲得SharedPreferences.Editor
SharedPreferences.Editor editor = settings.edit();
//保存組件的值 爲優先級設置填寫不同類型的內容
//用"field_height"界面組件標識符來取得身高的字符串 然後保存到PREF_HEIGHT所代表的優先級設置參數中
editor.putString(PREF_HEIGHT, field_height.getText().toString());
//提交保存的結果 將改變寫到系統中
editor.commit();
}
//保存用戶名
SharedPreferences preferences = getSharedPreferences("test",
Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString("userName", userName);
editor.commit();
//取值的用戶名
public static String getUserName(Context context) {
//String userName = "admin";
// //獲取用戶名
SharedPreferences sharedPreference = context.getSharedPreferences("test", Context.MODE_PRIVATE);
String UserName = sharedPreference.getString("userName", "");
return UserName;
};