Android四種數(shù)據(jù)存儲的應(yīng)用方式
Android四種數(shù)據(jù)存儲的應(yīng)用方式
作為一個完整的應(yīng)用程序,數(shù)據(jù)存儲操作是必不可少的。因此,Android系統(tǒng)一共提供了四種數(shù)據(jù)存儲方式。分別是:SharePreference、文件存儲、SQLite、 Content Provider。對這幾種方式的不同和應(yīng)用場景整理如下。
第一種: 使用SharedPreferences存儲數(shù)據(jù)
適用范圍:保存少量的數(shù)據(jù),且這些數(shù)據(jù)的格式非常簡單:字符串型、基本類型的值。比如應(yīng)用程序的各種配置信息(如是否打開音效、是否使用震動效果、小游戲的玩家積分等),解鎖口 令密碼等
核心原理:保存基于XML文件存儲的key-value鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。通過DDMS的File Explorer面板,展開文件瀏覽樹,很明顯SharedPreferences數(shù)據(jù)總是存儲在/data/data//shared_prefs目錄下。SharedPreferences對象本身只能獲取數(shù)據(jù)而不支持存儲和修改,存儲修改是通過SharedPreferences.edit()獲取的內(nèi)部接口Editor對象實(shí)現(xiàn)。 SharedPreferences本身是一 個接口,程序無法直接創(chuàng)建SharedPreferences實(shí)例,只能通過Context提供的getSharedPreferences(String name, int mode)方法來獲取SharedPreferences實(shí)例,該方法中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)用程序讀,寫
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ù)存儲方式。
第二種: 文件存儲數(shù)據(jù)
可以在設(shè)備本身的存儲設(shè)備或者外接的存儲設(shè)備中創(chuàng)建用于保存數(shù)據(jù)的文件。同樣在默認(rèn)的狀態(tài)下,文件是不能在不同的程序間共享。
寫文件:調(diào)用Context.openFileOutput()方法根據(jù)指定的路徑和文件名來創(chuàng)建文件,這個方法會返回一個FileOutputStream對象。
讀取文件:調(diào)用Context.openFileInput()方法通過制定的路徑和文件名來返回一個標(biāo)準(zhǔn)的Java FileInputStream對象。
第三種:SQLite存儲數(shù)據(jù)
SQLite Database數(shù)據(jù)庫。Android對數(shù)據(jù)庫的支持很好,它本身集成了SQLite數(shù)據(jù)庫,每個應(yīng)用都可以方便的使用它,或者更確切的說,Android完全依賴于SQLite數(shù)據(jù)庫,它所有的系統(tǒng)數(shù)據(jù)和用到的結(jié)構(gòu)化數(shù)據(jù)都存儲在數(shù)據(jù)庫中。 它具有以下優(yōu)點(diǎn): a. 效率出眾,這是無可否認(rèn)的 b. 十分適合存儲結(jié)構(gòu)化數(shù)據(jù) c. 方便在不同的Activity,甚至不同的應(yīng)用之間傳遞數(shù)據(jù)?! ?/p>
第四種:ContentProvider
Android系統(tǒng)中能實(shí)現(xiàn)所有應(yīng)用程序共享的一種數(shù)據(jù)存儲方式,由于數(shù)據(jù)通常在各應(yīng)用間的是互相私密的,所以此存儲方式較少使用,但是其又是必不可少的一種存儲方式。例如音頻,視頻,圖片和通訊錄,一般都可以采用此種方式進(jìn)行存儲。每個ContentProvider都會對外提供一個公共的URI(包裝成Uri對象),如果應(yīng)用程序有數(shù)據(jù)需要共享時,就需要使用ContentProvider為這些數(shù)據(jù)定義一個URI,然后其他的應(yīng)用程序就通過Content Provider傳入這個URI來對數(shù)據(jù)進(jìn)行操作。
總結(jié)一下,文件適用于存儲一些簡單的文本數(shù)據(jù)或者二進(jìn)制數(shù)據(jù),SharedPreferences適用于存儲一些鍵值對,而數(shù)據(jù)庫則適用于那些復(fù)雜的關(guān)系型數(shù)據(jù)。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- android?studio數(shù)據(jù)存儲建立SQLite數(shù)據(jù)庫實(shí)現(xiàn)增刪查改
- Android 通過SQLite數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)存儲管理
- Android基礎(chǔ)教程數(shù)據(jù)存儲之文件存儲
- Android SharedPreferences實(shí)現(xiàn)數(shù)據(jù)存儲功能
- android使用SharedPreferences進(jìn)行數(shù)據(jù)存儲
- Android開發(fā)教程之ContentProvider數(shù)據(jù)存儲
- 詳解Android的網(wǎng)絡(luò)數(shù)據(jù)存儲
- 5種Android數(shù)據(jù)存儲方式匯總
- 詳解Android數(shù)據(jù)存儲之SQLCipher數(shù)據(jù)庫加密
- Android 單例模式實(shí)現(xiàn)可復(fù)用數(shù)據(jù)存儲的詳細(xì)過程
相關(guān)文章
Android基于OpenCV實(shí)現(xiàn)QR二維碼檢測
QR碼比普通一維條碼具有快速讀取和更大的存儲資料容量,也無需要像一維條碼般在掃描時需要直線對準(zhǔn)掃描儀。因此其應(yīng)用范圍已經(jīng)擴(kuò)展到包括產(chǎn)品跟蹤,物品識別,文檔管理,庫存營銷等方面。本文講解Android基于OpenCV實(shí)現(xiàn)QR二維碼檢測的步驟2021-06-06Android studio 出現(xiàn)錯誤Run with --stacktrace option to get the s
這篇文章主要介紹了 Android studio 出現(xiàn)錯誤Run with --stacktrace option to get the stack trace. Run with --info or --debu的相關(guān)資料,需要的朋友可以參考下2016-11-11Android checkbox的listView(多選,全選,反選)具體實(shí)現(xiàn)方法
由于listview的一些特性,剛開始寫這種需求的功能的時候都會碰到一些問題,重點(diǎn)就是存儲每個checkbox的狀態(tài)值,在這里分享出了完美解決方法:2013-06-06Android 判斷當(dāng)前語言環(huán)境是否是中文環(huán)境
本文主要介紹了Android 判斷當(dāng)前語言環(huán)境是否是中文環(huán)境的方法。具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04Android開發(fā)之Fragment懶加載的幾種方式及性能對比
這篇文章主要介紹了Android開發(fā)之Fragment懶加載的幾種方式及性能對比的相關(guān)資料,具體詳細(xì)介紹需要的小伙伴可以參考下面文章內(nèi)容2022-05-05Android用注解與反射實(shí)現(xiàn)Butterknife功能
Butterknife是一個在android上實(shí)現(xiàn)ioc(控制反轉(zhuǎn))的一個庫。ioc的核心是解耦。解耦的目的是修改耦合對象時不影響另外一個對象,降低模塊之間的關(guān)聯(lián)。在Spring中ioc更多的是依靠xml的配置。而android上的IOC框架可以不使用xml配置2022-11-11Android 中使用ExpandableListView 實(shí)現(xiàn)分組的實(shí)例
這篇文章主要介紹了Android 中使用ExpandableListView 實(shí)現(xiàn)分組的實(shí)例的相關(guān)資料,這里提供實(shí)例代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-12-12Android Studio error: Unable to start the daemon process的解決方
這篇文章主要介紹了在 Android Studio 上新建項(xiàng)目,出現(xiàn) Unable to start the daemon process問題的幾種的解決方法,需要的朋友可以參考下2020-10-10