Android開發之數據存儲之(一)【haredPreferences】
很多時候我們開發的軟件需要向用戶提供軟件參數設置功能,例如我們常用的QQ,用戶可以設置是否允許陌生人添加自己爲好友。對於軟件配置參數的保存,如果是window軟件通常我們會採用ini文件進行保存,如果是j2se應用,我們會採用properties屬性文件進行保存。如果是Android應用,我們最適合採用什麼方式保存軟件配置參數呢?
Android平臺給我們提供了一個SharedPreferences類,它是一個輕量級的存儲類,特別適合用於保存軟件配置參數。使用SharedPreferences保存數據,其背後是用xml文件存放數據,文件存放在/data/data/<package name>/shared_prefs目錄下:
下面我們通過一個簡單的小例子來學習:
我們在XML下定義兩個TextView和兩個EditText,代碼如下:
<TextView
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="用戶名"
/>
<EditText
android:id="@+id/userame"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/view2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="密碼"
/>
<EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
/>
然後我們在SharedActivity.Java中的代碼:
private static final String SETTING_INFOS = "SETTING_Infos";
private static final String NAME = "NAME";
private static final String PASSWORD = "PASSWORD";
private EditText username=null;
private EditText password=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
username=(EditText) findViewById(R.id.userame);
password=(EditText) findViewById(R.id.password);
//獲取了一個SharedPreferences對象
SharedPreferences preferences=getSharedPreferences(SETTING_INFOS, 0);
//讀取SharedPreferences存儲文件的內容
String nameString=preferences.getString(NAME, "");
String pwd=preferences.getString(PASSWORD, "");
username.setText(nameString);
password.setText(pwd);
}
@Override
protected void onPause() {
super.onPause();
//獲取對象,第一個參數爲保存xml文件的文件名,第二個參數是保存文件的操作模式
SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, 0);
//先調用edit使其處於可編輯狀態,然後寫進去,再提交
sharedPreferences.edit()
.putString(NAME,username.getText().toString())
.putString(PASSWORD, password.getText().toString())
.commit();
}
//
// @Override
// protected void onStop() {
// super.onStop();
// SharedPreferences sharedPreferences=getSharedPreferences(SETTING_INFOS, 0);
// sharedPreferences.edit()
// .putString(NAME,username.getText().toString())
// .putString(PASSWORD, password.getText().toString())
// .commit();
//
// }
註釋的內容是寫在onStop中的,需要在完全退出程序的時候才能執行,寫在onPuse中的,只要切換到別的頁面的時候就會保存。
如下圖,我們輸入數據
然後我們來到DDMS下面,然後找到File Explorer下面的data下找到以我們包名命名的文件夾,在裏面的share_prefs文件夾下面的xml文件即爲保存數據的文件,導出後用EditPlus打開來看下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="PASSWORD">vvvvvvvghjnb</string>
<string name="NAME">dbkkk </string>
</map>