十年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
      南昌百恒網(wǎng)絡(luò)微信公眾號(hào) 掃一掃關(guān)注
      小程序
      tel-icon全國(guó)服務(wù)熱線:400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開百恒網(wǎng)絡(luò)微信小程序

      百恒網(wǎng)絡(luò)

      南昌百恒網(wǎng)絡(luò)

      如何使用shared preferences來(lái)實(shí)現(xiàn)輕量級(jí)數(shù)據(jù)存儲(chǔ)?

      百恒網(wǎng)絡(luò) 2017-05-23 5144

      現(xiàn)在,取代硬編碼搜索字符串,南昌APP開發(fā)公司-百恒網(wǎng)絡(luò)教你來(lái)實(shí)現(xiàn)用戶在SearchView中輸入并提交的查詢指令。在PhotoGallery應(yīng)用中,一次只有一個(gè)激活的查詢。應(yīng)用應(yīng)該保存這個(gè)查詢,即使應(yīng)用或設(shè)備重啟也不會(huì)丟失。要實(shí)現(xiàn)這個(gè)目標(biāo),可以把查詢字符串寫入shared preferences。只要用戶提交查詢,就把它寫入shared preferences,覆蓋掉之前保持的字符串。實(shí)際搜索Flickr時(shí),就從sharedpreferences中取出查詢字符串,把它作為text參數(shù)值。

      shared preferences本質(zhì)上就是文件系統(tǒng)中的文件,可使用SharedPreferences類讀寫它。SharedPreferences實(shí)例用起來(lái)更像一個(gè)鍵值對(duì)倉(cāng)庫(kù)(類似于Bundle),但它可以通過持久化存儲(chǔ)保存數(shù)據(jù)。鍵值對(duì)中的鍵為字符串,而值是原子數(shù)據(jù)類型。進(jìn)一步查看shared preferences文件可知,它們實(shí)際上是一種簡(jiǎn)單的XML文件,但SharedPreferences類已屏蔽了讀寫文件的實(shí)現(xiàn)細(xì)節(jié)。shared preferences文件保存在應(yīng)用沙盒中,所以,類似密碼這樣的敏感信息不應(yīng)該用它來(lái)保存。

      要獲得定制的SharedPreferences 實(shí)例, 可使用Context.getSharedPreferences (String,int)方法。然而,在實(shí)際開發(fā)中,我們并不關(guān)心具體是什么樣的SharedPreferences實(shí)例,只要它能共享于整個(gè)應(yīng)用就可以了。這種情況下,最好使用PreferenceManager.getDefaultSharedPreferences(Context)方法,該方法會(huì)返回具有私有權(quán)限和默認(rèn)名稱的實(shí)例(僅在當(dāng)前應(yīng)用內(nèi)可用)。

      如下圖代碼清單所示,添加一個(gè)名為QueryPreferences的新類,用于讀取和寫入查詢字符串。

      添加一個(gè)名為QueryPreferences的新類

      PREF_SEARCH_QUERY用作查詢字符串的存儲(chǔ)key,讀取和寫入時(shí)都要用到它。

      getStoredQuery(Context)方法返回shared preferences中保存的查詢字符串值。不過,它首先要找到指定context 中的默認(rèn)SharedPreferences 。( QueryPreferences 類沒有自己的Context,所以該方法的調(diào)用者必須傳入一個(gè)。)

      取出查詢字符串值非常簡(jiǎn)單,調(diào)用SharedPreferences.getString(...)就可以了。如果是其他類型數(shù)據(jù),就調(diào)用對(duì)應(yīng)的取值方法,比如getInt(...),SharedPreferences.getString (PREF_SEARCH_QUERY, null)方法的第二個(gè)參數(shù)指定默認(rèn)返回值;如果找不到PREF_SEARCH_QUERY對(duì)應(yīng)的值,就返回null值。

      setStoredQuery(Context)方法向指定context的默認(rèn)shared preferences寫入查詢輸入值。在以上代碼中,調(diào)用SharedPreferences.edit()方法,可獲取一個(gè)SharedPreferences.Editor實(shí)例。它就是在SharedPreferences中保存查詢信息要用到的類。與FragmentTransaction的

      使用類似,利用SharedPreferences.Editor,可將一組數(shù)據(jù)操作放入一個(gè)事務(wù)中。如有一批數(shù)據(jù)要更新,在一個(gè)事務(wù)中進(jìn)行批量數(shù)據(jù)存儲(chǔ)寫入操作就可以了。

      完成所有數(shù)據(jù)的變更準(zhǔn)備后,調(diào)用SharedPreferences.Editor的apply()異步方法寫入數(shù)據(jù)。這樣,該SharedPreferences文件的其他用戶就能看到寫入的數(shù)據(jù)了。apply()方法首先在內(nèi)存中執(zhí)行數(shù)據(jù)變更,然后在后臺(tái)線程上真正把數(shù)據(jù)寫入文件。

      QueryPreferences是PhotoGallery應(yīng)用的數(shù)據(jù)存儲(chǔ)引擎。既然已經(jīng)搞定了查詢信息的讀取和寫入方法,現(xiàn)在就來(lái)在PhotoGalleryFragment中應(yīng)用它們。

      首先是保存用戶提交的查詢信息,如下圖代碼所示。

      保存用戶提交的查詢信息

      接下來(lái),在用戶從溢出菜單選擇Clear Search選項(xiàng)時(shí)清除存儲(chǔ)的查詢信息(設(shè)置為null),如下圖代碼所示。

      在用戶從溢出菜單選擇Clear Search選項(xiàng)時(shí)清除存儲(chǔ)的查詢信息(設(shè)置為null)

      發(fā)現(xiàn)沒有?和第二張圖片代碼中的做法一樣,更新完查詢信息,updateItems()方法會(huì)被調(diào)用。這很有必要,可以確保RecyclerView中顯示最新的搜素結(jié)果。

      最后,別忘了更新FetchItemsTask,來(lái)使用保存的查詢字符串(終于可以不用硬編碼字符串了)。在FetchItemsTask中添加一個(gè)定制版構(gòu)造方法,用于接收查詢信息并保存在一個(gè)成員變量中備用。更新updateItems()方法,從shared preferences中取出保存的查詢信息,用它創(chuàng)建一個(gè)FetchItemsTask新實(shí)例,如下圖代碼所示。

      更新FetchItemsTask,來(lái)使用保存的查詢字符串

      搜索功能現(xiàn)在應(yīng)該可以正常使用了。運(yùn)行PhotoGallery應(yīng)用,嘗試進(jìn)行一些搜索并查看返回結(jié)果。

      了解更多南昌APP開發(fā)、微信開發(fā)等技術(shù)資訊,歡迎來(lái)電咨詢百恒網(wǎng)絡(luò),或者訪問百恒網(wǎng)絡(luò)官網(wǎng)查看,網(wǎng)址:http://www.dgscpc.com/

      400-680-9298,0791-88117053
      掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
      掃一掃打開百恒網(wǎng)絡(luò)小程序

      歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務(wù) 售后服務(wù)
       
      售后服務(wù) 售后服務(wù)
       
      備案專線 備案專線
       
      ×
      国产精品99久久久久久人| 精品久久久久久无码不卡| 亚洲精品无码久久久久| 国产真实乱子伦精品视手机观看| 精品国产一区二区三区www| 日韩好片一区二区在线看| 日韩高清国产一区在线| 91精品在线播放| 久久天堂AV女色优精品| 日韩精品国产一区| 亚洲中文字幕久久精品无码A| 国产精品久久久久网站| 少妇精品无码一区二区三区| 国产精品成人无码久久久久久| 日本精品高清一区二区2021| 国产成人精品AA毛片| aaa级精品久久久国产片| 中文字幕亚洲日韩无线码| 国产精品自在自线视频| 精品国产a∨无码一区二区三区| 亚洲精品无码Av人在线观看国产| 玖玖精品在线视频| 亚洲日韩精品无码专区| 亚洲精品一卡2卡3卡四卡乱码| 久久精品国产亚洲AV网站| 国内精品手机在线观看视频| 亚洲日韩精品一区二区三区| 亚洲精品一品区二品区三品区| 久久夜色撩人精品国产| 久久久久国产精品麻豆AR影院 | 亚洲日本久久久午夜精品| 精品一区二区三区在线视频| 久久久久无码精品| 日韩一区二区免费视频| 99视频精品全部在线观看| 久久国产精品免费专区| 久久精品国产亚洲沈樵| 9久久9久久精品| 国产精品国产三级国产普通话a | 久久精品免费观看| 91精品国产综合久久久久久|