本文介紹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)注和點贊是對我最大的鼓勵舍败,感謝您的閱讀