【有夢想的IT人】Android數(shù)據(jù)存儲之SharedPreferences

滴滴滴盲镶,發(fā)車了侥袜。

本文介紹Android平臺進(jìn)行數(shù)據(jù)存儲的五大方式,分別如下:

1 使用SharedPreferences存儲數(shù)據(jù)
2 文件存儲數(shù)據(jù)
3 SQLite數(shù)據(jù)庫存儲數(shù)據(jù)
4 使用ContentProvider存儲數(shù)據(jù)
5 網(wǎng)絡(luò)存儲數(shù)據(jù)

好事多磨,可愛的我們每天擼一個溉贿,一周剛好都完枫吧,今天來擼第一個!

使用SharedPreferences存儲數(shù)據(jù)

** 適用范圍:**保存少量的數(shù)據(jù)宇色,且這些數(shù)據(jù)的格式非常簡單:字符串型九杂、基本類型的值。比如應(yīng)用程序的各種配置信息(如是否打開音效宣蠕、是否使用震動效果例隆、APP版本號等),解鎖口 令密碼等

核心原理:保存基于XML文件存儲的key-value鍵值對數(shù)據(jù)抢蚀,通常用來存儲一些簡單的配置信息镀层。通過DDMS的File Explorer面板,展開文件瀏覽樹,很明顯SharedPreferences數(shù)據(jù)總是存儲在/data/data/<package name>/shared_prefs目錄下皿曲。SharedPreferences對象本身只能獲取數(shù)據(jù)而不支持存儲和修改,存儲修改是通過SharedPreferences.edit()獲取的內(nèi)部接口Editor對象實現(xiàn)唱逢。

SharedPreferences本身是一 個接口,程序無法直接創(chuàng)建SharedPreferences實例屋休,只能通過Context提供的getSharedPreferences(String name, int mode)方法來獲取SharedPreferences實例坞古,該方法中name表示要操作的xml文件名,第二個參數(shù)具體如下:
Context.MODE_PRIVATE: 指定該SharedPreferences數(shù)據(jù)只能被本應(yīng)用程序讀劫樟、寫痪枫。
Context.MODE_WORLD_READABLE: 指定該SharedPreferences數(shù)據(jù)能被其他應(yīng)用程序讀织堂,但不能寫。
Context.MODE_WORLD_WRITEABLE: 指定該SharedPreferences數(shù)據(jù)能被其他應(yīng)用程序讀听怕,寫

Editor有如下主要重要方法:
SharedPreferences.Editor clear():清空SharedPreferences里所有數(shù)據(jù)
***SharedPreferences.Editor putXxx(String key , xxx value): ***向SharedPreferences存入指定key對應(yīng)的數(shù)據(jù)捧挺,其中xxx 可以是boolean,float,int等各種基本類型據(jù)
***SharedPreferences.Editor remove(): ***刪除SharedPreferences中指定key對應(yīng)的數(shù)據(jù)項
*** boolean commit(): ***當(dāng)Editor編輯完成后虑绵,使用該方法提交修改
實際案例:運(yùn)行界面如下


這里只提供了兩個按鈕和一個輸入文本框尿瞭,布局簡單,故在此不給出界面布局文件了,

**程序核心代碼如下: **

class ViewOcl implements View.OnClickListener{

        @Override
        public void onClick(View v) {

            switch(v.getId()){
            case R.id.btnSet:
                //步驟1:獲取輸入值
                String code = txtCode.getText().toString().trim();
                //步驟2-1:創(chuàng)建一個SharedPreferences.Editor接口對象翅睛,lock表示要寫入的XML文件名声搁,MODE_WORLD_WRITEABLE寫操作
                SharedPreferences.Editor editor = getSharedPreferences("lock", MODE_WORLD_WRITEABLE).edit();
                //步驟2-2:將獲取過來的值放入文件
                editor.putString("code", code);
                //步驟3:提交
                editor.commit();
                Toast.makeText(getApplicationContext(), "口令設(shè)置成功", Toast.LENGTH_LONG).show();
                break;
            case R.id.btnGet:
                //步驟1:創(chuàng)建一個SharedPreferences接口對象
                SharedPreferences read = getSharedPreferences("lock", MODE_WORLD_READABLE);
                //步驟2:獲取文件中的值
                String value = read.getString("code", "");
                Toast.makeText(getApplicationContext(), "口令為:"+value, Toast.LENGTH_LONG).show();
                break;
            }
        }
        
    }

讀寫其他應(yīng)用的SharedPreferences步驟如下:
1、在創(chuàng)建SharedPreferences時捕发,指定MODE_WORLD_READABLE模式疏旨,表明該SharedPreferences數(shù)據(jù)可以被其他程序讀取
2、創(chuàng)建其他應(yīng)用程序?qū)?yīng)的Context:
Context pvCount = createPackageContext("com.tony.app", Context.CONTEXT_IGNORE_SECURITY);這里的com.tony.app就是其他程序的包名
3扎酷、使用其他程序的Context獲取對應(yīng)的SharedPreferences
SharedPreferences read = pvCount**.**getSharedPreferences("lock", Context.MODE_WORLD_READABLE);
4檐涝、如果是寫入數(shù)據(jù),使用Editor接口即可法挨,所有其他操作均和前面一致谁榜。
優(yōu)缺點

  • 優(yōu)點
    SharedPreferences對象與SQLite數(shù)據(jù)庫相比,免去了創(chuàng)建數(shù)據(jù)庫凡纳,創(chuàng)建表窃植,寫SQL語句等諸多操作,相對而言更加方便荐糜,簡潔巷怜。
  • 缺點
    SharedPreferences也有其自身缺陷,比如其只能存儲boolean暴氏,int延塑,float,long和String五種簡單的數(shù)據(jù)類型答渔,比如其無法進(jìn)行條件查詢等关带。所以不論SharedPreferences的數(shù)據(jù)存儲操作是如何簡單,它也只能是存儲方式的一種補(bǔ)充研儒,而無法完全替代如SQLite數(shù)據(jù)庫這樣的其他數(shù)據(jù)存儲方式豫缨。

參考:http://www.cnblogs.com/ITtangtang/p/3920916.html

嗨~我是夏尼采,一個有夢想的IT男

每周輸出3篇有用的文章端朵,目標(biāo)是簽約簡書好芭。

如果文章對您有幫助,希望能點個贊或者關(guān)注我冲呢。

您的關(guān)注和點贊是對我最大的鼓勵舍败,感謝您的閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子邻薯,更是在濱河造成了極大的恐慌裙戏,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厕诡,死亡現(xiàn)場離奇詭異累榜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)灵嫌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門壹罚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寿羞,你說我怎么就攤上這事猖凛。” “怎么了绪穆?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵辨泳,是天一觀的道長。 經(jīng)常有香客問我玖院,道長菠红,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任司恳,我火速辦了婚禮途乃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扔傅。我一直安慰自己耍共,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布猎塞。 她就那樣靜靜地躺著试读,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荠耽。 梳的紋絲不亂的頭發(fā)上钩骇,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機(jī)與錄音铝量,去河邊找鬼倘屹。 笑死,一個胖子當(dāng)著我的面吹牛慢叨,可吹牛的內(nèi)容都是我干的纽匙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拍谐,長吁一口氣:“原來是場噩夢啊……” “哼烛缔!你這毒婦竟也來了馏段?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤践瓷,失蹤者是張志新(化名)和其女友劉穎院喜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晕翠,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡喷舀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了崖面。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片元咙。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖巫员,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情甲棍,我是刑警寧澤简识,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站感猛,受9級特大地震影響七扰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陪白,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一颈走、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咱士,春花似錦立由、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弛房,卻和暖如春道盏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背文捶。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工荷逞, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粹排。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓种远,卻偏偏與公主長得像,于是被迫代替她去往敵國和親恨搓。 傳聞我的和親對象是個殘疾皇子院促,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容