亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

簡(jiǎn)介Android應(yīng)用中sharedPreferences類存儲(chǔ)數(shù)據(jù)的用法

 更新時(shí)間:2016年02月15日 18:01:27   作者:iam_wingjay  
這篇文章主要介紹了Android應(yīng)用中使用sharedPreferences類存儲(chǔ)數(shù)據(jù)的方法,文中舉了用SharedPreferences保存數(shù)據(jù)和讀取數(shù)據(jù)的例子,需要的朋友可以參考下

在Android開發(fā)中,經(jīng)常會(huì)遇到這樣一種情況,即需要將用戶偏好設(shè)置(如用戶偏好的app色彩主題)、與特定登錄用戶相關(guān)的設(shè)置(如不同登陸用戶的偏好)、整個(gè)app的生命周期內(nèi)的設(shè)置(如首次登陸顯示介紹頁)存儲(chǔ)在用戶本地,那么首先考慮使用sharedPreferences。這是Android中專門用來存儲(chǔ)輕量級(jí)鍵值對(duì)數(shù)據(jù)的類,會(huì)在本地以xml文件形式存儲(chǔ)。

一、 運(yùn)行機(jī)制
接口:SharedPreferencesImpl在該接口中,定義了一個(gè)Editor接口、一個(gè)edit方法、多個(gè)get方法、一個(gè)監(jiān)聽器用于監(jiān)聽內(nèi)容變更。其中,Editor接口主要用來寫入數(shù)據(jù),edit方法用來對(duì)外提供一個(gè)editor實(shí)例,get方法用來獲取鍵值對(duì),監(jiān)聽器用于實(shí)現(xiàn)類中監(jiān)聽。
接口:Editor接口中含有多個(gè)put方法、一個(gè)commit方法等。之所以要獨(dú)立出一個(gè)接口來進(jìn)行寫操作,是為了保證數(shù)據(jù)寫入的完整性。主要考慮的場(chǎng)景是如果同時(shí)要寫入多條鍵值對(duì),這些鍵值對(duì)不會(huì)逐條寫入文件中,而是先打包在一起,再一次性寫入,即one-at-a-time。具體實(shí)現(xiàn)方法是在Editor實(shí)現(xiàn)一個(gè)hashMap來暫存要寫入的數(shù)據(jù),先把所有鍵值對(duì)寫入內(nèi)存中的該hashMap中,然后再一次性寫入文件中。
該過程可以概括為先commitToMemory, 再writeToFile。

二、 使用方法
首先,想寫入鍵值對(duì),要先獲取一個(gè)sharedPreferences對(duì)象。
此時(shí)需要提供兩個(gè)要素:context上下文對(duì)象,對(duì)應(yīng)的文件名字。
這里,我們要明確這些鍵值對(duì)的實(shí)際存儲(chǔ)方式:它們是以多個(gè)文件的形式存儲(chǔ): /data/data/{packageName}/shared_prefs/{name}.xml。其中,實(shí)際的{name}.xml是在程序中指定的。
那么,我們只要調(diào)用context.getSharedPreferences(name, mode)即可獲取到所在packageName文件夾里對(duì)應(yīng)的name.xml文件映射過來的SharedPreferences對(duì)象。其中,mode是讀取文件的方式。
示例:
1、使用SharedPreferences保存數(shù)據(jù)方法如下:

//實(shí)例化SharedPreferences對(duì)象(第一步) 
SharedPreferences mySharedPreferences= getSharedPreferences("test", 
Activity.MODE_PRIVATE); 
//實(shí)例化SharedPreferences.Editor對(duì)象(第二步) 
SharedPreferences.Editor editor = mySharedPreferences.edit(); 
//用putString的方法保存數(shù)據(jù) 
editor.putString("name", "Karl"); 
editor.putString("habit", "sleep"); 
//提交當(dāng)前數(shù)據(jù) 
editor.commit(); 
//使用toast信息提示框提示成功寫入數(shù)據(jù) 
Toast.makeText(this, "數(shù)據(jù)成功寫入SharedPreferences!" , Toast.LENGTH_LONG).show();

執(zhí)行以上代碼,SharedPreferences將會(huì)把這些數(shù)據(jù)保存在test.xml文件中,可以在File Explorer的data/data/相應(yīng)的包名/test.xml 下導(dǎo)出該文件,并查看。
2、使用SharedPreferences讀取數(shù)據(jù)方法如下:

//同樣,在讀取SharedPreferences數(shù)據(jù)前要實(shí)例化出一個(gè)SharedPreferences對(duì)象 
SharedPreferencessharedPreferences= getSharedPreferences("test", 
Activity.MODE_PRIVATE); 
// 使用getString方法獲得value,注意第2個(gè)參數(shù)是value的默認(rèn)值 
String name =sharedPreferences.getString("name", ""); 
String habit =sharedPreferences.getString("habit", ""); 
//使用toast信息提示框顯示信息 
Toast.makeText(this, "讀取數(shù)據(jù)如下:"+"\n"+"name:" + name + "\n" + "habit:" + habit, 
Toast.LENGTH_LONG).show(); 

三、理解
我們可以簡(jiǎn)單的理解為:在手機(jī)本地某個(gè)地方會(huì)存放我們自定義的xml文件,每個(gè)文件用來存放相關(guān)的鍵值對(duì)數(shù)據(jù)。比如我們希望存儲(chǔ)用戶的偏好設(shè)置,即可創(chuàng)建一個(gè)名為UserPref的SharedPreferences并讀寫即可。

四、比較getSharedPreferenced和getPreference
getSharedPreferenced獲取的文件是在package內(nèi)都可以使用context對(duì)象獲取到的,只需要指定name就可以獲取到特定的xml文件。
但是,getPreference方法是專門用在Activity內(nèi)部的,創(chuàng)建的xml文件只能在該Activity上下文內(nèi)獲取,而且不需要指定名字,這個(gè)xml文件只屬于這個(gè)Activity。
其它就沒有區(qū)別了。唯一區(qū)別就是一個(gè)權(quán)限域的區(qū)別。
示例:

 Context context = getActivity();
 SharedPreferences sharedPref = context.getSharedPreferences("userPref", MODE_PRIVATE);
 SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

相關(guān)文章

  • android編程實(shí)現(xiàn)懸浮窗體的方法

    android編程實(shí)現(xiàn)懸浮窗體的方法

    這篇文章主要介紹了android編程實(shí)現(xiàn)懸浮窗體的方法,以實(shí)例形式較為詳細(xì)的分析了Android懸浮窗體的權(quán)限控制、布局及功能實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Android入門之Glide顯示網(wǎng)絡(luò)圖片高版本的使用詳解

    Android入門之Glide顯示網(wǎng)絡(luò)圖片高版本的使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android中Glide顯示網(wǎng)絡(luò)圖片高版本的使用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-02-02
  • 谷歌被屏蔽后如何搭建安卓環(huán)境

    谷歌被屏蔽后如何搭建安卓環(huán)境

    從5月27日開始,谷歌(Google)在華的幾乎所有的服務(wù)都處于無法使用的狀態(tài),除了搜索引擎遭到屏蔽之外,谷歌的郵箱(Gmail)、日歷(Calendar)、翻譯(Translate)、地圖(Maps)、分析(Analytics)和Google AdSense等產(chǎn)品也受到了影響。同時(shí)安裝安卓環(huán)境的時(shí)候同樣容易出現(xiàn)問題
    2014-06-06
  • Android模擬登錄評(píng)論CSDN實(shí)現(xiàn)代碼

    Android模擬登錄評(píng)論CSDN實(shí)現(xiàn)代碼

    本篇文章主要介紹了Android模擬登錄評(píng)論CSDN實(shí)現(xiàn)代碼,可以實(shí)現(xiàn)登陸發(fā)表評(píng)論到官方網(wǎng)站,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • Android?十六進(jìn)制狀態(tài)管理實(shí)例詳解

    Android?十六進(jìn)制狀態(tài)管理實(shí)例詳解

    這篇文章主要為大家介紹了Android?十六進(jìn)制狀態(tài)管理實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • android中使用react-native設(shè)置應(yīng)用啟動(dòng)頁過程詳解

    android中使用react-native設(shè)置應(yīng)用啟動(dòng)頁過程詳解

    這篇文章主要介紹了android中使用react-native設(shè)置應(yīng)用啟動(dòng)頁過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Android 插件化處理方案詳解

    Android 插件化處理方案詳解

    這篇文章主要介紹了Android 插件化處理方案的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下
    2021-04-04
  • Android主項(xiàng)目與Module中R類的區(qū)別詳解

    Android主項(xiàng)目與Module中R類的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于Android主項(xiàng)目與Module中R類的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • android仿iphone主題效果的主菜單

    android仿iphone主題效果的主菜單

    這篇文章主要為大家詳細(xì)介紹了android仿iphone主題效果的主菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android canvas drawBitmap方法詳解及實(shí)例

    Android canvas drawBitmap方法詳解及實(shí)例

    這篇文章主要介紹了 Android canvas drawBitmap方法詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評(píng)論