使用Shared Preferences存儲數據

一、Shared Preferences簡介

  SharedPreferences是Android系統提供的一個輕量級的存儲類,主要用於保存一些配置信息,比如窗口狀態,還有一切其它無關緊要的配置,每次都即拿即用的數據。注意不能用於存儲敏感信息,因爲它是暴露的(不安全的,當然也可以使用權限來控制,但不提倡)。

  SharedPreferences使用鍵值的形式來存儲數據,可以對常用數據類型boolean、float、int、long以及String進行保存。保存的數據以xml文件的形式存儲在/data/data/<包名>/shared_prefs目錄下。


二、使用Shared Preferences擦寫數據

  使用Shared Preferences存儲數據可以通過以下3個步驟來實現:

  (1)使用Context類提供的getSharedPreferences()方法,獲取SharedPreferences對象。getSharedPreferences()方法的原型如下:

  public abstract SharedPreferences getSharedPreferences(String name, int mode);

  其中,參數name表示存儲數據的文件名。有一點需要注意的是,此處只是定義了該文件名,如果曾經沒有創建過該文件,那麼此刻也不會馬上被創建該文件只有當創建了SharedPreferences.Edit對象並使用該對象的commit()方法提交數據時,纔會被創建。總的來說,此步驟就是在準備參數。

  參數mode用於指定文件的操作模式,其可選值有Context.MODE_APPEND(內容追加模式)、Context.MODE_PRIVATE(默認操作模式)、Context.MODE_WORLD_READABLE(可讀模式)、Context.MODE_WORLD_WRITEABLE(可寫模式)四種:

  Context.MODE_APPEND;//內容追加模式。在該模式下,系統會檢查文件是否存在,如果存在,則將內容追加到文件的末尾,如果文件不存在,則創建該文件並寫入內容。

  Context.MODE_PRIVATE;//默認操作模式。在該模式下,文件作爲私有數據,只能被該應用程序本身訪問。並且,在該模式下,寫入的內容會覆蓋原文件的內容。這種方式也是最普遍的一種方式。

  Context.MODE_WORLD_READABLE;//可讀模式。在該模式下,別的應用程序可以讀取該文件內容。

  Context.MODE_WORLD_WRITEABLE;//可寫模式。在該模式下,別的應用程序可以將內容寫入該文件。

  (2)使用SharedPreferences對象的edit()方法創建SharedPreferences.Edit對象使用Shared Preferences方式存儲數據時需要藉助SharedPreferences.Edit類提供的方法來添加數據。SharedPreferences.Edit類提供的方法包括putString()、putInt()、putDouble()等,參數均爲鍵、值。

  此步就是獲得Edit對象:SharedPreferences.Editor edit = sharedPreferences.edit();

  然後edit.putXXX(" ",XXX); 儲存數據,或者edit.remove("鍵")刪除某個數據,或者edit.clear()清除全部數據。所有的數據擦寫操作用的都是edit對象的方法。

  (3)使用commit()方法提交數據。

  實際上,Edit的用法就等於一個緩衝區,把你想要做的操作都記錄下來,然後commit(),一次性完成你要做的事情。

  成功返回true,失敗返回false.

  示例:

boolean isSaveDataSuccess = false;           
SharedPreferences sharedPreferences = this.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();    
edit.putString("userName", "admin");
isSaveDataSuccess = edit.commit();

二、使用Shared Preferences讀取數據

	//第一個參數爲文件名
        SharedPreferences sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
        //第二個參數爲讀取時失敗返回的值
        String userName = sharedPreferences.getString("userName", "null");


三、其它獲取Shared Preferences的方法

一、PreferenceManager.getDefaultSharedPreferences():顧名思義,獲取全局變量的Preferences,也就是PreferenceActivity生成的Preference;(什麼是PreferenceActivity?查看此處http://blog.csdn.net/plussoft/article/details/9993759

二、getPreferences():可以獲取當前Activity中的preference,這個方法我沒用過(主要是沒搞懂);


以上部分內容轉載或參考來源如下:

http://www.cnblogs.com/menlsh/archive/2013/04/07/3006510.html
在此表示感謝。
轉載請註明來源,版權歸原作者所有,未經同意嚴禁用於任何商業用途。
微博:http://weibo.com/theworldsong
郵箱:[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章