android之SharedPreferences

來源:互聯網
上載者:User

android之SharedPreferences

簡介 將資料存放區到SharedPreferences中 擷取SharedPreferences對象 Context類中的getSharedPreferences方法 檔案位置 Activity類中的getPreferences方法 PreferenceManager類中的getDefaultSharedPreferences方法 向SharedPreferences檔案中儲存資料 從SharedPreferences中讀取資料 結果示範

簡介

SharedPreferences是資料存放區方案中持久化技術之一(其它還有檔案儲存體,資料庫儲存等),它是一個輕量級的儲存類,特別適合用於儲存軟體配置參數或者儲存臨時資料。使用 SharedPreferences儲存資料,其背後是用xml檔案(索引值對)存放資料,,它存放在檔案系統中的/data/data//shared_prefs目錄下。

將資料存放區到SharedPreferences中擷取SharedPreferences對象

要想使用SharedPreferences來儲存資料,首先需要擷取SharedPreferences對象,有下列三個方法:

Context類中的getSharedPreferences()方法

getSharedPreferences()接收兩個參數:第一個參數用於指定檔案的名稱(若不存在則自動建立,無需加尾碼,系統自動加),第二個參數指定檔案的操作模式,主要有兩種模式:MODE_PRIVATE和MODE_MULTI_PROCESS,MODE_PRIVATE和直接傳入0效果一樣,表示只有當前的應用程式才可以對該SharedPreferences檔案進行讀寫;MODE_MULTI_PROCESS則一般用於多個進程對同一個SharedPreferences檔案進行讀寫的情況。其實還有另兩種,但是已在Android4.2版本之後被棄用,不多介紹。簡單代碼如下:

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(sywyg,0);

註:

通過這種方法獲得的SharedPreferences對象能被同一個應用中的所有Activity訪問 檔案儲存為xml類型檔案位置

通過 android studio中工具列上的綠色android機器人開啟DDMS(eclipse中好像直接寫著DDMS呢)可以查看sd卡檔案(File Explorer),我的SharedPreferences檔案存放在:/data/data/com.sywyg.intent_test/shared_prefs/名字為sywyg.xml。匯出xml檔案開啟之後內容如下:

    sywyg    

可以看到SharedPreferences就是通過索引值對儲存資料的。

Activity類中的getPreferences()方法

第二種擷取SharedPreferences對象的方法:Activity類中的getPreferences()方法。該方法只接受一個模式參數,而檔案名稱自動為當前Activity的類名。簡單代碼如下:

SharedPreferences sharedPreferences2 = this.getPreferences(0);

通過這種方式建立的SharedPreferences檔案存放的位置不變,而xml名稱為:MainActivity.xml,內容如下:

    sywyg    

註:

通過這種方法獲得的SharedPreferences對象,若其它Activity想獲得該SharedPreferences檔案,則只能通過Context類中的getSharedPreferences()方法擷取SharedPreferences對象,當然檔案名稱必須是該SharedPreferences檔案名稱。PreferenceManager類中的getDefaultSharedPreferences()方法

該方法為靜態方法,只有一個Context參數,並自動使用當前應用程式的包名作為首碼來命名SharedPreferences檔案。簡單代碼如下:

SharedPreferences sharedPreferences3 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

通過這種方式建立的SharedPreferences檔案存放的位置不變,而xml名稱為:com.sywyg.intent_test_preferences.xml,內容如下:

    sywyg    
向SharedPreferences檔案中儲存資料

擷取SharedPreferences對象之後,就可以向SharedPreferences檔案儲存資料了,由下列三步實現:

調用SharedPreferences對象的edit()方法來擷取一個SharedPreferences.Editor(內部類)對象; 通過putXXX()方法向Editor對象中添加資料; 調用commit()方法提交資料,完成資料存放區操作。

註:

一般在onPause()方法中儲存資料。

具體代碼如下:

@Overrideprotected void onPause(){   super.onPause();   SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(sywyg,0);   //SharedPreferences sharedPreferences = this.getPreferences(0);   //SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());   SharedPreferences.Editor editor = sharedPreferences.edit();   editor.putString(name,sywyg);   editor.putLong(id,1);   editor.commit();}

註:

通過putXXX()方法儲存的資料類型只能是:String,int,boolean,long,float;還可以是String集合。從SharedPreferences中讀取資料

通過SharedPreferences對象的getXXX()可以擷取對應的資料,getXXX()方法接收兩個參數,第一個參數是鍵(存資料時使用的鍵名),第二個參數為預設值,即當找不到對應的鍵時返回該值。

代碼如下:

@Overrideprotected void onResume(){  super.onResume();  SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(sywyg,0);  String name = sharedPreferences.getString(name,);  long id = sharedPreferences.getLong(id,0);  Toast.makeText(this,name: + name + ,id: + id,Toast.LENGTH_LONG).show();  SharedPreferences.Editor editor = sharedPreferences.edit();  //清除SharedPreferences檔案中的內容  editor.clear();  editor.commit();}
結果示範

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.