儲存資料之SharedPreference

saka發表於2019-02-28

官方文件

SharePreferences類提供了一個通用框架,以便能夠儲存和檢索原始資料型別的永久性鍵值對。你可以使用SharedPreferences來儲存任何原始資料型別:boolean,float,int,long,char和String,這些資料將會永久儲存。

要獲取應用的應用的SharedPreferences物件,請使用一下兩個方法:

  1. getSharedPreferences()
  • 如果您需要多個按名稱(使用第一個引數指定)識別的首選項檔案,請使用此方法。
  1. getPreferences()
  • 如果您只需要一個用於 Activity 的首選項檔案,請使用此方法。 由於這將是用於 Activity 的唯一首選項檔案,因此無需提供名稱。

寫入值的話請按照以下步驟來:

  1. 呼叫 edit() 以獲取 SharedPreferences.Editor。
  2. 使用 putBoolean() 和 putString() 等方法新增值。
  3. 使用 commit() 提交新值

要讀取值,請使用 getBoolean() 和 getString() 等 SharedPreferences 方法。

以下是在計算器中儲存靜音按鍵模式首選項的示例:

public class Calc extends Activity {
    public static final String PREFS_NAME = "MyPrefsFile";

    @Override
    protected void onCreate(Bundle state){
       super.onCreate(state);
       . . .

       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
       boolean silent = settings.getBoolean("silentMode", false);
       setSilent(silent);
    }

    @Override
    protected void onStop(){
       super.onStop();

      // We need an Editor object to make preference changes.
      // All objects are from android.context.Context
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
      SharedPreferences.Editor editor = settings.edit();
      editor.putBoolean("silentMode", mSilentMode);

      // Commit the edits!
      editor.commit();
    }
}複製程式碼

SharedPreferences getPreferences (int mode)這個方法實際是對getSharedPreferences(String, int)方法的一個簡單包裝,傳如引數預設為activity的類名。

SharedPreferences的使用方法

SharedPreferences是一個用於訪問和修改用於訪問和修改getSharedPreferences(String,int)返回的首選項資料的介面。 對於任何特定的首選項集合,所有客戶端共享此類的單個例項。 對首選項的修改必須通過SharedPreferences.Editor物件進行,以確保首選項值保持在一致狀態並在提交到儲存時進行控制。 從各種get方法返回的物件必須被應用程式視為不可變的。

注意:此類不支援在多個程式中使用。

  1. boolean contains (String key)
    返回在SharedPreferences中是否包含傳入key的值。包含返回true,不包含返回false。

例如sp.contains(“foo”),將會檢查是否包含key值為foo的儲存鍵值對是否存在。

2.SharedPreferences.Editor edit ()

獲取SharedPreferences的編輯工具,獲取方法為
SharedPreferences.Editor edit=sp.edit()

注意:你必須呼叫commit()方法才能將你的改變的值真正存入到sp中。

3.Map<string, ?=””> getAll ()
返回一個map型別的所有的鍵值對。

相關文章