Android四種數(shù)據(jù)存儲(chǔ)的應(yīng)用方式
Android四種數(shù)據(jù)存儲(chǔ)的應(yīng)用方式
作為一個(gè)完整的應(yīng)用程序,數(shù)據(jù)存儲(chǔ)操作是必不可少的。因此,Android系統(tǒng)一共提供了四種數(shù)據(jù)存儲(chǔ)方式。分別是:SharePreference、文件存儲(chǔ)、SQLite、 Content Provider。對(duì)這幾種方式的不同和應(yīng)用場(chǎng)景整理如下。
第一種: 使用SharedPreferences存儲(chǔ)數(shù)據(jù)
適用范圍:保存少量的數(shù)據(jù),且這些數(shù)據(jù)的格式非常簡(jiǎn)單:字符串型、基本類(lèi)型的值。比如應(yīng)用程序的各種配置信息(如是否打開(kāi)音效、是否使用震動(dòng)效果、小游戲的玩家積分等),解鎖口 令密碼等
核心原理:保存基于XML文件存儲(chǔ)的key-value鍵值對(duì)數(shù)據(jù),通常用來(lái)存儲(chǔ)一些簡(jiǎn)單的配置信息。通過(guò)DDMS的File Explorer面板,展開(kāi)文件瀏覽樹(shù),很明顯SharedPreferences數(shù)據(jù)總是存儲(chǔ)在/data/data//shared_prefs目錄下。SharedPreferences對(duì)象本身只能獲取數(shù)據(jù)而不支持存儲(chǔ)和修改,存儲(chǔ)修改是通過(guò)SharedPreferences.edit()獲取的內(nèi)部接口Editor對(duì)象實(shí)現(xiàn)。 SharedPreferences本身是一 個(gè)接口,程序無(wú)法直接創(chuàng)建SharedPreferences實(shí)例,只能通過(guò)Context提供的getSharedPreferences(String name, int mode)方法來(lái)獲取SharedPreferences實(shí)例,該方法中name表示要操作的xml文件名,第二個(gè)參數(shù)具體如下:
Context.MODE_PRIVATE: 指定該SharedPreferences數(shù)據(jù)只能被本應(yīng)用程序讀、寫(xiě)。 Context.MODE_WORLD_READABLE: 指定該SharedPreferences數(shù)據(jù)能被其他應(yīng)用程序讀,但不能寫(xiě)。 Context.MODE_WORLD_WRITEABLE: 指定該SharedPreferences數(shù)據(jù)能被其他應(yīng)用程序讀,寫(xiě)
SharedPreferences對(duì)象與SQLite數(shù)據(jù)庫(kù)相比,免去了創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建表,寫(xiě)SQL語(yǔ)句等諸多操作,相對(duì)而言更加方便,簡(jiǎn)潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲(chǔ)boolean,int,float,long和String五種簡(jiǎn)單的數(shù)據(jù)類(lèi)型,比如其無(wú)法進(jìn)行條件查詢(xún)等。所以不論SharedPreferences的數(shù)據(jù)存儲(chǔ)操作是如何簡(jiǎn)單,它也只能是存儲(chǔ)方式的一種補(bǔ)充,而無(wú)法完全替代如SQLite數(shù)據(jù)庫(kù)這樣的其他數(shù)據(jù)存儲(chǔ)方式。
第二種: 文件存儲(chǔ)數(shù)據(jù)
可以在設(shè)備本身的存儲(chǔ)設(shè)備或者外接的存儲(chǔ)設(shè)備中創(chuàng)建用于保存數(shù)據(jù)的文件。同樣在默認(rèn)的狀態(tài)下,文件是不能在不同的程序間共享。
寫(xiě)文件:調(diào)用Context.openFileOutput()方法根據(jù)指定的路徑和文件名來(lái)創(chuàng)建文件,這個(gè)方法會(huì)返回一個(gè)FileOutputStream對(duì)象。
讀取文件:調(diào)用Context.openFileInput()方法通過(guò)制定的路徑和文件名來(lái)返回一個(gè)標(biāo)準(zhǔn)的Java FileInputStream對(duì)象。
第三種:SQLite存儲(chǔ)數(shù)據(jù)
SQLite Database數(shù)據(jù)庫(kù)。Android對(duì)數(shù)據(jù)庫(kù)的支持很好,它本身集成了SQLite數(shù)據(jù)庫(kù),每個(gè)應(yīng)用都可以方便的使用它,或者更確切的說(shuō),Android完全依賴(lài)于SQLite數(shù)據(jù)庫(kù),它所有的系統(tǒng)數(shù)據(jù)和用到的結(jié)構(gòu)化數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)庫(kù)中。 它具有以下優(yōu)點(diǎn): a. 效率出眾,這是無(wú)可否認(rèn)的 b. 十分適合存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù) c. 方便在不同的Activity,甚至不同的應(yīng)用之間傳遞數(shù)據(jù)。
第四種:ContentProvider
Android系統(tǒng)中能實(shí)現(xiàn)所有應(yīng)用程序共享的一種數(shù)據(jù)存儲(chǔ)方式,由于數(shù)據(jù)通常在各應(yīng)用間的是互相私密的,所以此存儲(chǔ)方式較少使用,但是其又是必不可少的一種存儲(chǔ)方式。例如音頻,視頻,圖片和通訊錄,一般都可以采用此種方式進(jìn)行存儲(chǔ)。每個(gè)ContentProvider都會(huì)對(duì)外提供一個(gè)公共的URI(包裝成Uri對(duì)象),如果應(yīng)用程序有數(shù)據(jù)需要共享時(shí),就需要使用ContentProvider為這些數(shù)據(jù)定義一個(gè)URI,然后其他的應(yīng)用程序就通過(guò)Content Provider傳入這個(gè)URI來(lái)對(duì)數(shù)據(jù)進(jìn)行操作。
總結(jié)一下,文件適用于存儲(chǔ)一些簡(jiǎn)單的文本數(shù)據(jù)或者二進(jìn)制數(shù)據(jù),SharedPreferences適用于存儲(chǔ)一些鍵值對(duì),而數(shù)據(jù)庫(kù)則適用于那些復(fù)雜的關(guān)系型數(shù)據(jù)。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- android?studio數(shù)據(jù)存儲(chǔ)建立SQLite數(shù)據(jù)庫(kù)實(shí)現(xiàn)增刪查改
- Android 通過(guò)SQLite數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)管理
- Android基礎(chǔ)教程數(shù)據(jù)存儲(chǔ)之文件存儲(chǔ)
- Android SharedPreferences實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)功能
- android使用SharedPreferences進(jìn)行數(shù)據(jù)存儲(chǔ)
- Android開(kāi)發(fā)教程之ContentProvider數(shù)據(jù)存儲(chǔ)
- 詳解Android的網(wǎng)絡(luò)數(shù)據(jù)存儲(chǔ)
- 5種Android數(shù)據(jù)存儲(chǔ)方式匯總
- 詳解Android數(shù)據(jù)存儲(chǔ)之SQLCipher數(shù)據(jù)庫(kù)加密
- Android 單例模式實(shí)現(xiàn)可復(fù)用數(shù)據(jù)存儲(chǔ)的詳細(xì)過(guò)程
相關(guān)文章
Android注冊(cè)登錄實(shí)時(shí)自動(dòng)獲取短信驗(yàn)證碼
注冊(cè)登錄或修改密碼功能常常需要輸入短信驗(yàn)證碼,如何自動(dòng)獲取短信驗(yàn)證碼,這篇文章就為大家介紹了Androidcv注冊(cè)登錄自動(dòng)獲取短信驗(yàn)證碼的實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-08-08
Android Java調(diào)用自己C++類(lèi)庫(kù)的實(shí)例講解
今天小編就為大家分享一篇關(guān)于A(yíng)ndroid Java調(diào)用自己C++類(lèi)庫(kù)的實(shí)例講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02
Android 中對(duì)JSON數(shù)據(jù)解析實(shí)例代碼
這篇文章主要介紹了Android 中對(duì)JSON數(shù)據(jù)解析實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03
Android實(shí)現(xiàn)懸浮窗的簡(jiǎn)單方法實(shí)例
相信大家應(yīng)該也都發(fā)現(xiàn)了,現(xiàn)在很多應(yīng)用都使用到懸浮窗,例如微信在視頻的時(shí)候,點(diǎn)擊Home鍵,視頻小窗口仍然會(huì)在屏幕上顯示,下面這篇文章主要給大家介紹了關(guān)于A(yíng)ndroid實(shí)現(xiàn)懸浮窗的簡(jiǎn)單方法,需要的朋友可以參考下2021-09-09
Android DrawerLayout帶有側(cè)滑功能的布局類(lèi)(2)
這篇文章主要為大家詳細(xì)介紹了Android DrawerLayout帶有側(cè)滑功能的布局類(lèi),感興趣的小伙伴們可以參考一下2016-07-07
Android自定義ViewGroup之WaterfallLayout(二)
這篇文章主要為大家詳細(xì)介紹了Android自定義ViewGroup之WaterfallLayout,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android中Serializable和Parcelable序列化對(duì)象詳解
這篇文章主要介紹了Android中Serializable和Parcelable序列化對(duì)象的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-02-02
Android自定義View軟鍵盤(pán)實(shí)現(xiàn)搜索
本文給大家分享android自定義view軟鍵盤(pán)實(shí)現(xiàn)搜索,對(duì)android軟鍵盤(pán)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12

