天天看點

Android--使用SharedPreferences

在所有應用程式中,都必然涉及資料的互動。有些時候,應用程式有少量的資料需要儲存,并且這些資料的格式很簡單。比如:軟體設定、使用者賬戶設定,使用者習慣設定等,這個時候就可以用到SharedPreferences。

  因為SharedPreferences本身是一個接口,程式無法直接建立SharedPreferences的執行個體,隻能通過Context提供的getSharedPreferences(String name,int mode)方法來擷取SharedPreferences的執行個體。

  public abstract SharedPreferences getSharedPreferences(String name,int mode)

  第一個參數name為建立的檔案名稱,如設定了name為"SilverDemo",則生成的檔案名為:SilverDemo.xml。

  第二個參數mode為int類型,此參數描述了建立的檔案的可見性。有如下值:

    MODE_PRIVATE:指定此SharedPreferences隻有本程式可以通路。

    MODE_WORLD_READABLE:指定此SharedPreferences對其他程式隻讀且無法修改。

    MODE_WORLD_WRITEABLE:指定此SharedPreferences能被其他程式讀寫。

    MODE_MULTI_PROCESS:Android2.3之後已經棄之不用了。   

  SharedPreferences儲存的資料主要是類似于配置資訊格式的資料,是以它儲存的資料主要是簡單類型的Key-value對。并且Value部分隻能是一些基本資料類型:boolean、float、int、long、String等。

  SharedPreferences的常用方法:

  boolean contains(String Key):判斷SharedPreferences是否包含特定Key的資料。

  abstract Map<String,?> getAll():擷取SharedPreferences資料裡全部的Key-Value對。

    boolean getXxx(String key,Xxx defValue):擷取SharedPreferences資料裡指定Key對應的value。如果該Key不存在,傳回預設值defValue。

  SharedPreferences本身為接口類型,并沒有提供寫入資料的能力,而是通過SharedPreferences的内部接口實作寫入資料的能力。調用edit()方法即可擷取它所對應的Editor對象。

  SharedPreferences.Editor的常用方法:

  abstract SharedPreferences.Editor clear():清空SharedPreferences裡所有的資料。

  abstract SharedPreferences.Editor putXxx(String key,xxx value):向SharedPreferences中插入指定的Key-Value對。

  abstract SharedPreferences.Editor remove(String key):從SharedPreferences中移除指定Key的資料。

  boolean commit():當Editor編輯完成後,調用該方法送出修改。

示例,簡單使用SharedPreferences實作存儲,頁面僅存在兩個Button控件,此處不附布局詳情。

<a></a>

  建立的檔案總是儲存在根目錄的data/data/&lt;package name&gt;/shared_prefs目錄下。可以使用File Explorer工具檢視,此工具在Eclipse→windows→Show view→other,打開Show View視窗,選中File Explorer。

 

Android--使用SharedPreferences

  如圖所示,把此檔案導出到PC上,可以看到xml檔案中的内容為:

<code>&lt;?xml version=</code><code>'1.0'</code> <code>encoding=</code><code>'utf-8'</code> <code>standalone=</code><code>'yes'</code> <code>?&gt;</code>

<code>&lt;map&gt;</code>

<code>&lt;</code><code>int</code> <code>name=</code><code>"random"</code> <code>value=</code><code>"83"</code> <code>/&gt;</code>

<code>&lt;string name=</code><code>"time"</code><code>&gt;</code><code>2013</code><code>年</code><code>3</code><code>月</code><code>4</code><code>日</code><code>12</code><code>:</code><code>19</code><code>:</code><code>38</code><code>&lt;/string&gt;</code>

<code>&lt;/map&gt;</code>

  

   在建立一個SharedPreferences的時候,如果需要讓别的應用程式也能通路到本程式的SharedPreferences,則在建立的時候指定MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE就可以了。在其他程式通路的時候,隻要能擷取到建立的程式的Context就可以通路了。

  具體步驟:

需要建立其他程式對應的Context。使用Context.createPackageContext(String packageName, int flags)。

調用其他應用程式的Context的getSharedPerferences(String name,int mode)即可擷取相應的SharedPreferences對象。

其他操作與操作本程式的SharedPreferences一緻。

  Context.createPackageContext(String packageName, int flags):根據包的名稱,傳回此包的Context。通過flags控制安全性:可選值:CONTEXT_INCLUDE_CODE 或 CONTEXT_IGNORE_SECURITY(常用).

  實際上,開發者完全可以使用IO流的方式通路xml檔案,但是此方法過于繁瑣,沒有直接使用SharedPreferences來的簡潔明了。

本文轉自承香墨影部落格園部落格,原文連結:http://www.cnblogs.com/plokmju/archive/2013/03/14/2960365.html,如需轉載請自行聯系原作者

繼續閱讀