[Android Training視頻系列]6.1 Saving Key-Value Sets

來源:互聯網
上載者:User

1.主要內容

本小節介紹SharedPreference相關API的使用

  • 擷取SharedPreference的Handle
  • 寫Shared Preference
  • 讀Shared Preference


2.視頻講解
http://www.eyeandroid.com/thread-11495-1-1.html

3.翻譯參考

Saving Key-Value Sets

 

如果你有一個相對較小的key-value集合需要儲存,你應該使用SharedPreferences APIs。 SharedPreferences 對象指向了一個儲存key-value pairs的檔案,並且它提供了簡單的方法來讀寫這個檔案。每一個 SharedPreferences 檔案都是由framework管理的並且可以是私人或者可分享的。

這節課會示範如何使用 SharedPreferences APIs 來儲存與檢索簡單的資料。

Note: SharedPreferences APIs 僅僅提供了讀寫key-value對的功能,請不要與 Preference APIs相混淆。後者可以協助你建立一個設定使用者配置的頁面(儘管它實際上是使用SharedPreferences 來實現儲存使用者配置的)。如果想瞭解更多關於Preference APIs的資訊,請參考Settings 指南。

Get a Handle to a SharedPreferences [擷取SharedPreference的Handle]

 

你可以通過下面兩個方法之一來建立或者訪問shared preference 檔案:

  • getSharedPreferences() — 如果你需要多個通過名稱參數來區分的shared preference檔案, 名稱可以通過第一個參數來指定。你可以在你的app裡面通過任何一個Context 來執行這個方法。
  • getPreferences() — 當你的activity僅僅需要一個shared preference檔案時。因為這個方法會檢索activitiy下的預設的shared preference檔案,並不需要提供檔案名稱。

例如:下面的樣本是在 Fragment 中被執行的,它會訪問名為 R.string.preference_file_key 的shared preference檔案,並使用private模式來開啟它,這樣的話,此時檔案就僅僅可以被你的app訪問了。

 

Context context = getActivity();SharedPreferences sharedPref = context.getSharedPreferences(        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

當命名你的shared preference檔案時,你應該像 "com.example.myapp.PREFERENCE_FILE_KEY" 這樣來命名。

當然,如果你的activity僅僅需要一個shared preference檔案時,你可以使用 getPreferences()方法:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

Caution: 如果你建立了一個 MODE_WORLD_READABLE 或者 MODE_WORLD_WRITEABLE 模式的shared preference檔案,那麼任何其他的app只要知道檔案名稱,則可以訪問這個檔案。

 

 

Write to Shared Preferences [寫Shared Preference]

為了寫shared preferences檔案,需要通過執行 edit() 來建立一個 SharedPreferences.Editor。

通過類似 putInt() 與 putString()方法來傳遞keys與values。然後執行 commit() 來提交改變。[後來有建議除非是出於線程同步的需要,否則請使用apply()方法來替代commit(),因為後者有可能會卡到UI Thread.]

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);SharedPreferences.Editor editor = sharedPref.edit();editor.putInt(getString(R.string.saved_high_score), newHighScore);editor.commit();
Read from Shared Preferences [讀Shared Preference]

為了從shared preference中檢索讀取資料,可以通過類似 getInt() 與 getString()等方法來讀取。在那些方法裡面傳遞你想要擷取value對應的key,並且提供一個預設的value。如下:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);longdefault= getResources().getInteger(R.string.saved_high_score_default));long highScore = sharedPref.getInt(getString(R.string.saved_high_score),default);

聯繫我們

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