這周主要講解了SharedPreferences的使用和Android中如何存儲(chǔ)數(shù)據(jù)的問(wèn)題,還討論了關(guān)于raw,res,asset 等文件的區(qū)別的使用方式。這里我先做個(gè)總結(jié)來(lái)說(shuō)明下自己以往使用的經(jīng)驗(yàn)。 SharedPreferences實(shí)質(zhì)上就是在內(nèi)部存儲(chǔ)了XML文件,文件中可以放置一些對(duì)象??梢詫?duì)文件進(jìn)行修改和刪除等操作。但是對(duì)應(yīng)的raw,res,asset 等目錄下的文件是只能讀取,不能修改和刪除的,這個(gè)是因?yàn)檫@些目錄的對(duì)應(yīng)文件已經(jīng)被編譯進(jìn)了apk包中,做為源碼的一部分。對(duì)已對(duì)應(yīng)一些有對(duì)大型文件(特別是二進(jìn)制文件)有存儲(chǔ)和刪除需求的一般都在內(nèi)部存儲(chǔ)或者外部存儲(chǔ)來(lái)完成。 一、Android SharedPreferences的簡(jiǎn)介SharedPreferences是一種輕型的Android數(shù)據(jù)存儲(chǔ)方式,它的本質(zhì)是基于XML文件存儲(chǔ)key-value鍵值對(duì)數(shù)據(jù),通常用來(lái)存儲(chǔ)一些簡(jiǎn)單的配置信息。其存儲(chǔ)位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對(duì)象本身只能獲取數(shù)據(jù)而不支持存儲(chǔ)和修改,存儲(chǔ)修改是通過(guò)Editor對(duì)象實(shí)現(xiàn)。比較經(jīng)典的使用方式例如用戶輸入框?qū)^(guò)往登錄賬戶的存儲(chǔ)。實(shí)現(xiàn)SharedPreferences存儲(chǔ)的步驟如下: 1、根據(jù)Context獲取SharedPreferences對(duì)象 2、利用edit()方法獲取Editor對(duì)象。 3、通過(guò)Editor對(duì)象存儲(chǔ)key-value鍵值對(duì)數(shù)據(jù)。 4、通過(guò)commit()方法提交數(shù)據(jù)。二、SharedPreferences和Editor 的關(guān)系1、SharedPreferencespublic abstract SharedPreferences getSharedPreferences (String name, int mode) 方法得到一個(gè)sharedpreferences對(duì)象,參數(shù)name是preference文件的名字,mode則是方式,默認(rèn)為0。 2、EditorEditor可用于SharedPreferences數(shù)據(jù)的添加,刪除,修改和查詢。 Public abstract SharedPreferences.Editor putString (String key,String value) 通過(guò)執(zhí)行commit()或是apply()方法,將會(huì)應(yīng)用更改。 三、SharedPreferences的代碼片段
public void setSharedPreference() {
sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
editor.putString("username", text1.getText().toString());
editor.putInt("password", getpw());
editor.commit();
}
public void removeSharedPreference() {
sharedPreferences = getSharedPreferences("itcast", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
editor.remove("username");
editor.remove("password");
editor.commit();
}
public void getSahrePreference() {
String username = sharedPreferences.getString("username", "");
int password = sharedPreferences.getInt("password", 0);
String str = String.valueOf(password);
text1.setText(username);
text2.setText(str);
} 1。獲取資源的輸入流
資源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目錄下,可以在 Activity 中通過(guò) //也可以放置圖片等資源,獲取方式相同
Context.getAssets().open(“sample.txt”)
方法獲取輸入流。
注意:如果資源文件是文本文件則需要考慮文件的編碼和換行符。建議使用UTF-8和Unix換行符。
2. WebView 加載assets目錄下的html文件
資源文件 sample.html 位于 $PROJECT_HOME/assets/ 目錄下,可以通過(guò)以下代碼
WebView.loadUrl(“file:///android_asset/sample.html”);
加載html文件。
Android 系統(tǒng)為每個(gè)新設(shè)計(jì)的程序提供了/assets目錄,這個(gè)目錄保存的文件可以打包在程序里。/res 和/assets的不同點(diǎn)是,android不為/assets下的文件生成ID。如果使用/assets下的文件,需要指定文件的路徑和文件名。下面這個(gè)例子,顯示如何訪問(wèn)/assets下的內(nèi)容。
|