Android中SharedPreferences使用小記

Android中SharedPreferences使用小記

1、引言

        Android中使用SharedPreferences來進行簡單數據的持久化處理,從名字就能夠了解,其設計目的是爲了保存應用程序的一些偏好設置,如音量,主題等信息。其與iOS開發中的NSUserDefault十分相似,而且,他們的實質都是採用XML格式的文件來存儲數據。java

2、SharedPreferences的簡單應用

        對數據的持久化操做都會分爲兩個部分,一部分爲存,另外一部分爲取。首先,開發者在Activity中使用以下方法能夠獲取獲取建立一個SharedPreferences實例:app

/*
這個方法須要傳入兩個參數,第一個參數爲文件名,第二個參數爲文件模式
*/
SharedPreferences sharedPreferences = getSharedPreferences("MyPreference",MODE_PRIVATE);

在getSharedPreference()方法中第一個參數決定這個存儲文件的名字,在獲取SharedPreferences實例時,若是系統建立過這個文件,則會返回本地的原文件,若是沒有這個文件,則會進行建立。第二個參數決定這個文件的訪問權限,可選參數以下:異步

Activity.MODE_PRIVATE,//默認操做模式,表明該文件是私有數據,只能被應用自己訪問
Activity.MODE_WORLD_READABLE,//表示當前文件能夠被其餘應用讀取,  
Activity.MODE_WORLD_WRITEABLE,//表示當前文件能夠被其餘應用寫入;

有了SharedPreferences實例,在須要進行數據存儲時,須要獲取到SharedPreferences實例中的Editor對象,SharedPreferences類中有一個Editor的內部接口,其中提供了存儲數據的相關方法,示例代碼以下:ide

//獲取Editor對象
SharedPreferences.Editor editor = sharedPreferences.edit();
//進行字符串存儲
editor.putString("password","123456");
//提交存儲內容
editor.commit();

Editor採用鍵值對的存儲方式,能夠存儲的數據即經常使用方法以下:spa

public interface Editor {
        //進行字符串數據存儲
        SharedPreferences.Editor putString(String var1, String var2);
        //進行字符Set存儲
        SharedPreferences.Editor putStringSet(String var1, Set<String> var2);
        //進行Int值存儲
        SharedPreferences.Editor putInt(String var1, int var2);
        //進行Long值存儲
        SharedPreferences.Editor putLong(String var1, long var2);
        //進行Float值存儲
        SharedPreferences.Editor putFloat(String var1, float var2);
        //進行布爾值存儲
        SharedPreferences.Editor putBoolean(String var1, boolean var2);
        //刪除一個鍵 與其對應的值
        SharedPreferences.Editor remove(String var1);
        //清空全部數據
        SharedPreferences.Editor clear();
        //提交存儲
        boolean commit();
        //提交存儲請求
        void apply();
    }

上面的方法中,有兩點須要注意,首先clear()方法是將全部的鍵的值清空,並無刪除鍵,而remove是刪除鍵和值。第二點,commit()方法和apply()方法都用於提交數據,不一樣的是,commit()方法會直接將數據同步到磁盤,返回值會告知開發者是否同步成功,而apply()方法只是將數據存儲在內存,以後異步進行存盤操做,沒有返回值,在開發中,若是要保證數據立馬存入磁盤,要使用commit()方法。設計

        對存儲的數據進行讀取,能夠直接調用SharedPreferences實例的以下方法:code

public interface SharedPreferences {
    //獲取全部鍵值映射表
    Map<String, ?> getAll();
    //經過鍵獲取字符串值 第一個參數爲鍵 第二個參數爲此鍵不存在時使用的默認值
    String getString(String var1, String var2);
    //經過鍵獲取字符串值集合 第一個參數爲鍵 第二個參數爲此鍵不存在時使用的默認值
    Set<String> getStringSet(String var1, Set<String> var2);
    //經過鍵獲取整形值 第一個參數爲鍵 第二個參數爲此鍵不存在時使用的默認值
    int getInt(String var1, int var2);
    //經過鍵獲取長整形值 第一個參數爲鍵 第二個參數爲此鍵不存在時使用的默認值
    long getLong(String var1, long var2);
    //經過鍵獲取浮點值 第一個參數爲鍵 第二個參數爲此鍵不存在時使用的默認值
    float getFloat(String var1, float var2);
    //經過鍵獲取布爾值 第一個參數爲鍵 第二個參數爲此鍵不存在時使用的默認值
    boolean getBoolean(String var1, boolean var2);
    //檢查文件中是否包含某個鍵
    boolean contains(String var1);
    //註冊監聽
    void registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener var1);
    //取消註冊監聽
    void unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener var1);
    public interface OnSharedPreferenceChangeListener {
        void onSharedPreferenceChanged(SharedPreferences var1, String var2);
    }
}

註冊監聽方法能夠提供給開發者一個回調接口,當SharedPreferences中數據改變時,會通知給開發者進行邏輯處理,示例代碼以下:對象

//建立監聽者
 final SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
            //須要重寫這個方法 這個方法中會傳入發生變化的鍵s
            @Override
            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
                Log.d("**********",s);
            }
        };
//進行註冊
sharedPreferences.registerOnSharedPreferenceChangeListener(listener);

 

舒適提示:能夠在Android Device Monitor中查看建立的SharedPreferences文件,路徑爲data/data/APP包名/shared_prefs目錄下,能夠看到其爲XML文件,以下圖:接口

 

專一技術,熱愛生活,交流技術,也作朋友。內存

——琿少 QQ羣:435043639

相關文章
相關標籤/搜索