注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術(shù)一般,由于喜愛安卓而產(chǎn)生了翻譯的念頭,純屬個(gè)人興趣愛好。
原文鏈接: http://developer.android.com/training/basics/data-storage/shared-preferences.html
如果你有一些希望存儲(chǔ)的相對(duì)較小的鍵值對(duì)數(shù)據(jù)集,你應(yīng)該使用
SharedPreferences
的APIs。一個(gè)
SharedPreferences
對(duì)象指向一個(gè)包含鍵值對(duì)的文件,同時(shí)它還提供了一些簡便的方法來支持寫和讀。每個(gè)
SharedPreferences
文件由框架管理并且可以規(guī)定是私有的還是共享的。
這節(jié)課將會(huì)介紹如何使用
SharedPreferences
APIs來存儲(chǔ)和恢復(fù)簡單的數(shù)據(jù)。
Note:
SharedPreferences 的API只能用來讀寫鍵值對(duì),不要將它與 Preference 的APIs搞混了,后者被用來根據(jù)你的應(yīng)用設(shè)置幫助你構(gòu)建一個(gè)UI(雖然他們使用 SharedPreferences 作為它們的實(shí)現(xiàn)來保存應(yīng)用的配置)更多關(guān)于使用 Preference 的信息,閱讀: Settings 。
?
一). 獲取一個(gè)SharedPreferences句柄
你可以通過下面方法的任意一個(gè)來創(chuàng)建一個(gè)新的shared preferences文件或者獲得一個(gè)已經(jīng)存在的文件:
- getSharedPreferences() :使用該方法如果你需要多個(gè)以名字作為標(biāo)識(shí)的 shared preferences文件,名字是方法的第一個(gè)參數(shù)。你可以在你應(yīng)用中的任何 Context 下調(diào)用這個(gè)方法。
- getPreferences() :在一個(gè) Activity 使用該方法如果你在這個(gè)activity中僅需要一個(gè) shared preferences文件。因?yàn)檫@將獲得一個(gè)屬于該activity的默認(rèn) shared preferences文件,所以你不需要提供一個(gè)名稱。
例如,下面的代碼在一個(gè)fragment中執(zhí)行。它獲得一個(gè) shared preferences文件,該文件的名字由資源字符串“ R.string.preference_file_key ”所指定,并且使用私有模式打開,這樣這個(gè)文件就只會(huì)被你的應(yīng)用所訪問:
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences( getString(R.string.preference_file_key), Context.MODE_PRIVATE);
當(dāng)為 shared preferences文件起名時(shí),你應(yīng)該使用一個(gè)獨(dú)有的可以識(shí)別出你的應(yīng)用的名字,比如:“ com.example.myapp.PREFERENCE_FILE_KEY ”。
當(dāng)然,如果你只想要在activity中使用一個(gè) shared preferences文件,你可以使用 getPreferences() 方法:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
Caution:
如果你通過 MODE_WORLD_READABLE 或者 MODE_WORLD_WRITEABLE 創(chuàng)建了一個(gè) shared preferences文件,那么任何知道這個(gè)文件名的其他應(yīng)用都可以獲取你的數(shù)據(jù)。
?
二). 寫入SharedPreferences
為了寫入一個(gè) shared preferences文件,通過在你的 SharedPreferences 上調(diào)用 edit() 來創(chuàng)建一個(gè) SharedPreferences.Editor 。
將你希望寫入的鍵和值通過響應(yīng)的方法寫入,如: putInt() 和 putString() 等。之后調(diào)用 commit() 來保存變更:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(getString(R.string.saved_high_score), newHighScore); editor.commit();
?
三). 讀取SharedPreferences
為了從 shared preferences文件中獲取數(shù)據(jù),調(diào)用響應(yīng)的方法,比如: getInt() 和 getString() 等,提供值所對(duì)應(yīng)的鍵,還有一個(gè)可選的默認(rèn)值,在鍵不存在時(shí)會(huì)返回 該值:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = getResources().getInteger(R.string.saved_high_score_default); long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
