Android 的資料存放區——SharePreferences

來源:互聯網
上載者:User

標籤:android   style   blog   io   color   ar   使用   for   sp   

SharedPreferences的使用

  有些時候,應用程式有少量的資料需要儲存,而且這些資料的格式很簡單:都是普通的字串、標量類型的值等,比如應用程式的各種配置資訊(如是否開啟音效、是否使用震動效果等)、小遊戲的玩家積分(如掃雷英雄榜之類的)等,對於這種資料,Android提供了SharedPreferences進行儲存。

SharedPreferences與Editor簡介

  SharedPreferences儲存的資料主要是類似於配置資訊格式的資料,因此它儲存的資料主要是簡單類型的key-value對。

  SharedPreferences介面主要負責讀取應用程式的Preferences資料,它提供了如下常用方法訪問SharedPreferences中的key-value對。

  • boolean contains(String key):判斷SharedPreferences是否包含特定key的資料。
  • abstract Map<String,?> getAll():擷取SharedPreferences資料裡全部的key-value對。
  • boolean getXxx(String key,xxx defaultValue):擷取SharedPreferences資料裡指定key對應的value。如果該key不存在,返回預設值defaultValue。其中xxx可以是boolean、float、int、long、String等各種基本類型的值。

  SharedPreferences介面本身並沒有提供寫入資料的能力,而是通過SharedPreferences的內部介面,SharedPreferences調用edit()方法即可擷取它所對應的Editor對象。Editor提供了如下方法來向SharedPreferences寫入資料。

  • SharedPreferences.Editor clear():清空SharedPreferences裡的所有資料。
  • SharedPreferences.Editor putXxx(String key,xxx value):向SharedPreferences存入指定key對應的資料。其中xxx可以是boolean、float、int、long、String等各種基本類型的值。
  • SharedPreferences.Editor remove(String key):刪除SharePreferences裡指定key對應的資料項目。
  • boolean commit():當Editor編輯完成後,調用該方法提交修改。

  SharedPreferences 本身是一個介面,程式無法直接建立SharedPreference執行個體,只能通過Context提供的getSharedPreferences(String name,int mode)方法來擷取SharedPrefereces執行個體,該方法的第二個參數(mode)支援如下幾個值。

  • Context.MODE_PRIVATE:指定該SharedPreferences資料只能被本應用程式讀、寫。
  • Context.MODE_WORLD_READABLE:指定該SharedPreferences資料能被其他應用程式讀,但不能寫。
  • Context.MODE_WORLD_WRITEABLE:指定該SharedPreferences資料能被其他應用程式讀、寫。

執行個體

 執行個體向SharedPreferences中寫入、讀取資料,該程式的介面很簡單,它只是提供兩個按鈕,其中一個寫資料,另一個用於讀取資料。布局檔案比較簡單,就不貼出來了。

public class SharePreferencesActivity extends Activity {        SharedPreferences preferences;    SharedPreferences.Editor editor;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_share_preferences);                //擷取只能被本應用程式讀、寫的SharedPreferences對象        preferences=getSharedPreferences("crazyit", MODE_PRIVATE);        editor=preferences.edit();        Button read=(Button)findViewById(R.id.read);        Button write=(Button)findViewById(R.id.write);                read.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                // 讀取字串資料                String time=preferences.getString("time", null);                //讀取int類型的資料                int randNum=preferences.getInt("random", 0);                                String result=time==null?"你暫時還未寫入資料":"寫入時間為: "                            +time+"\n上次產生的隨機數為: "+randNum;                //使用Toast提示資訊                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();                            }        });                write.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                // TODO Auto-generated method stub                SimpleDateFormat adf=new SimpleDateFormat("yyyy年MM月dd月 "                                                +"hh:mm:ss");                //存入目前時間                editor.putString("time", adf.format(new Date()));                                editor.putInt("random", (int)(Math.random()*100));                //提交所有存入的資料                editor.commit();                            }        });                    }}

在/data/data/com.hutao.sharedpreference/shared_prefs/有一個crazyit.xml檔案。開啟該XML文檔可以看到檔案內容:

<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?><map><int name="random" value="30" /><string name="time">2014年11月03月 03:29:23</string></map>

參考資料:

  《Android 瘋狂講義》

 

 

 

 

 

Android 的資料存放區——SharePreferences

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.