SharedPreferences:喜好設定
喜好設定指的是“個人化”,即同一個軟體,不同的使用者,設定的結果是不一樣的,例如某音樂播放器中的“是否在WIFI情況下下載歌詞”、某遊戲中的“是否開啟背景音樂”、“是否開啟間效”,某新聞APP中的“預設字型大小”…… 一.使用喜好設定的資料的特徵是: 資料量小 存在可描述的K-V關係 資料在應用程式中私人,不需要共用給其它應用 隨時可能需要儲存或讀取 二.使用喜好設定儲存資料:
調用Context的getSharedPreferences(String name, int mode)方法擷取SharedPreferences對象,其中,第1個參數表示儲存喜好設定的檔案的檔案名稱,不需要指定副檔名,儲存時會自動添加.xml作為副檔名,第2個參數固定取值Context.MODE_PRIVATE
調用SharedPreferences對象的edit()方法,擷取SharedPreferences.Editor對象
調用SharedPreferences.Editor對象的put???(String key, ??? value)方法寫入資料
調用SharedPreferences.Editor對象的commit()方法提交寫入
使用喜好設定儲存的資料固定會儲存在 /data/data/應用程式的package/shared_prefs/ 檔案夾下,如果檔案夾不存在,系統會自動建立。
在系統的 設定(Settings) -> 應用程式(Apps) 找到儲存了喜好設定的應用,選擇 清除資料(Clear Data) 將會把所有喜好設定資料、私人檔案、資料庫、登入的帳號清除掉。 三.讀取喜好設定中的資料:
調用Context的getSharedPreferences(String name, int mode)方法擷取SharedPreferences對象,過程可參考儲存資料
調用SharedPreferences對象的get???(String key, ??? defValue)方法讀取資料
注意:在喜好設定中讀取資料時,可以將喜好設定視為“是不可靠的”,因為首次運行時可能沒有儲存過資料,則讀不到資料,或者使用者在使用軟體的過程中,隨時可能清除資料,也將讀不到資料。 四.登入記住使用者名稱與密碼
public class MainActivity extends Activity { // 聲明控制項 private Button btLog; private EditText etUserName; private EditText etPassWord; // 聲明變數 private SharedPreferences preferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 控制項初始化 btLog=(Button)findViewById(R.id.button1); etUserName=(EditText)findViewById(R.id.editText1); etPassWord=(EditText)findViewById(R.id.editText2); //擷取到喜好設定對象:第一個參數是表名,第二個參數是許可權 preferences=this.getSharedPreferences("login",this.MODE_PRIVATE); //擷取到喜好設定裡面存的使用者名稱和密碼資料 String name=preferences.getString("name", ""); String pass=preferences.getString("pass", ""); //往兩個輸入框裡面放我們儲存的資料 etUserName.setText(name); etPassWord.setText(pass); //設定登入按鈕的點擊事件:把輸入的資料存入喜好設定 btLog.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //將資料儲存到喜好設定裡面 //1.擷取到喜好設定的一個編輯的對象 Editor ed=preferences.edit(); //2.編輯器.putString;放字串 //2.1.擷取輸入框的內容 String username=etUserName.getText().toString().trim(); String password=etPassWord.getText().toString().trim(); //2.2.放入我們的資料 ed.putString("name",username); ed.putString("pass",password); //3.提交 ed.commit(); Toast.makeText(getApplicationContext(),"儲存成功",Toast.LENGTH_SHORT).show(); } }); }}