国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android 平臺(tái)的數(shù)據(jù)存儲(chǔ)機(jī)制應(yīng)用研究

2014-06-18 00:17楊亮袁嵩等
電腦知識(shí)與技術(shù) 2014年11期
關(guān)鍵詞:開源引擎應(yīng)用程序

楊亮+袁嵩等

摘要:數(shù)據(jù)存儲(chǔ)是Android應(yīng)用程序開發(fā)必須首要解決的一個(gè)問題。Android系統(tǒng)提供了多種數(shù)據(jù)存儲(chǔ)機(jī)制。針對(duì)如何正確、快速的選擇合適的存儲(chǔ)機(jī)制以及如何在程序設(shè)計(jì)中正確使用的問題,介紹了SharedPreferences、Files、NetWork和SQLite四種種數(shù)據(jù)存儲(chǔ)機(jī)制,結(jié)合它們的原理,給出了具體的實(shí)現(xiàn)方法,并對(duì)其優(yōu)缺點(diǎn)進(jìn)行了分析。

關(guān)鍵詞:數(shù)據(jù)存儲(chǔ);SharedPreferences;Files;NetWork;SQLite

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)11-2481-04

Abstract: Data storage is the primary problem in Android application development. Android provides a variety of data storage mechanisms. In order to select and apply the storage mechanisms correctly and rapidly in programming, four storage mechanisms, i.e. SharedPreferences, Files, NetWork and SQLite are presented, combining their principle, the specific implementation methods are proposed, and the advantages and disadvantages are analyzed.

Key words: data storage; SharedPreferences; Files; NetWork; SQLite

Android系統(tǒng)是一種以Linux為內(nèi)核的操作系統(tǒng),是一個(gè)完整、開放、免費(fèi)和開源的智能移動(dòng)開發(fā)平臺(tái),在手機(jī)、平板電腦和其它嵌入式產(chǎn)品中已廣泛應(yīng)用。Android應(yīng)用程序種類繁多,極大方便了人們的日常生活。算法和數(shù)據(jù)是應(yīng)用程序的核心,應(yīng)用程序在進(jìn)行存儲(chǔ)和管理數(shù)據(jù)時(shí)可以使用不同的方式。網(wǎng)絡(luò)存儲(chǔ)和本地存儲(chǔ)是Android系統(tǒng)數(shù)據(jù)存儲(chǔ)的兩種形式。該文主要對(duì)Android系統(tǒng)提供的數(shù)據(jù)存儲(chǔ)機(jī)制進(jìn)行研究,為程序開發(fā)人員提供參考,使之能夠根據(jù)應(yīng)用程序的數(shù)據(jù)存儲(chǔ)需求選擇適當(dāng)?shù)拇鎯?chǔ)機(jī)制以及正確的使用方法。

1 Android的數(shù)據(jù)存儲(chǔ)機(jī)制

作為一個(gè)完整的應(yīng)用程序,數(shù)據(jù)存儲(chǔ)操作是必不可少的。如何適當(dāng)?shù)倪x擇存儲(chǔ)機(jī)制是任何軟件開發(fā)者都要面臨的問題。數(shù)據(jù)必須以某種方式保存,并且確保以較少的資源方便、有效的使用和更新。Android平臺(tái)為開發(fā)者提供了4種常用的數(shù)據(jù)存儲(chǔ)機(jī)制

1.1.1 原理

SharedPreferences用來存儲(chǔ)一些簡(jiǎn)單配置信息,將數(shù)據(jù)以XML格式存儲(chǔ)到設(shè)備中[2]。例如保存用戶的用戶名和密碼以便程序下次開啟時(shí)可自動(dòng)登錄。SharedPreferences采用了Map數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),以key-value鍵值對(duì)的方式存儲(chǔ),可以簡(jiǎn)單的讀取和寫入。每次對(duì)數(shù)據(jù)進(jìn)行更改前先調(diào)用edit()使其處于編輯狀態(tài),然后才能修改數(shù)據(jù),最后使用commit()提交修改的數(shù)據(jù)。

1.1.3 特點(diǎn)

SharedPreferences對(duì)象不用像SQLite等數(shù)據(jù)庫(kù)管理系統(tǒng)那樣創(chuàng)建數(shù)據(jù)庫(kù),創(chuàng)建表,寫SQL語(yǔ)句等操作,比起SQLite數(shù)據(jù)庫(kù)更加方便,簡(jiǎn)潔。但是SharedPreferences也有其自身缺陷,例如存儲(chǔ)類型有限,只能存儲(chǔ)boolean、int、float、long和String五種簡(jiǎn)單的數(shù)據(jù)類型。并且其無(wú)法進(jìn)行條件查詢。所以雖然SharedPreferences的數(shù)據(jù)存儲(chǔ)操作簡(jiǎn)單,但也只能是存儲(chǔ)方式的一種補(bǔ)充,面對(duì)數(shù)據(jù)量大的存儲(chǔ)時(shí)不如SQLite數(shù)據(jù)庫(kù)這樣的數(shù)據(jù)存儲(chǔ)方式優(yōu)越,而且開發(fā)人員無(wú)法在多個(gè)應(yīng)用程序間共享SharedPreferences數(shù)據(jù)。

1.2.1 原理

Files存儲(chǔ)機(jī)制是通過Java中的IO流來對(duì)文件進(jìn)行操作[3]。然而在Android平臺(tái)中,文件是應(yīng)用程序私有的,一個(gè)程序的文件只能被此程序解讀。Android平臺(tái)可以把數(shù)據(jù)保存在設(shè)備本身的存儲(chǔ)設(shè)備或外接的存儲(chǔ)設(shè)備中,文件是不能在不同的程序之間共享的,只能通過Java中IO流進(jìn)行文件操作。

1.2.3 特點(diǎn)

Files存儲(chǔ)就是把需要保存的數(shù)據(jù)通過文件的形式記錄下來,當(dāng)需要這些數(shù)據(jù)時(shí),通過讀取這個(gè)文件來獲取這些數(shù)據(jù)。由于Android 平臺(tái)是基于Linux開發(fā)的,所以在Android 平臺(tái)中,文件也是Linux 的形式。Android中可以在設(shè)備本身的存儲(chǔ)或者外接的存儲(chǔ)設(shè)備中創(chuàng)建用于保存數(shù)據(jù)的文件。同時(shí),在默認(rèn)狀態(tài)下,文件是不能在不同的程序間共享的。它可以存儲(chǔ)大容量的數(shù)據(jù),但是文件的增刪改查會(huì)帶來繁重的代碼工作。

1.3.1 原理

NetWork存儲(chǔ)機(jī)制是通過網(wǎng)絡(luò)資源存儲(chǔ)和獲得存儲(chǔ)空間的方式來進(jìn)行數(shù)據(jù)存儲(chǔ)。此種方法需要設(shè)備保持網(wǎng)絡(luò)連接狀態(tài),所以相對(duì)存在一些限制。將數(shù)據(jù)存儲(chǔ)到網(wǎng)絡(luò)上的方法很多,例如將要保存的數(shù)據(jù)以文件的形式上傳到服務(wù)器或者發(fā)送郵件等。

1.3.3 特點(diǎn)

網(wǎng)絡(luò)存儲(chǔ)最大的特點(diǎn)是節(jié)省空間、存儲(chǔ)方便、獲取數(shù)據(jù)及時(shí),不過也有它難以克服的弊端。主要是移動(dòng)終端的網(wǎng)絡(luò)穩(wěn)定性差,并且所產(chǎn)生的高流量讓人難以接受。但若是對(duì)于非常重要的實(shí)時(shí)數(shù)據(jù),或是需要發(fā)送給遠(yuǎn)端服務(wù)器處理的數(shù)據(jù),可以考慮使用網(wǎng)絡(luò)實(shí)時(shí)發(fā)送。這又引出了用戶隱私的問題,例如iPhone設(shè)備和Android設(shè)備都會(huì)在用戶不知情的情況下收集用戶信息,發(fā)送到Apple和Google的服務(wù)器上,不僅用戶隱私難以保證,還會(huì)消耗大量的流量。endprint

1.4.1 原理

SQLite是一個(gè)輕量級(jí)的強(qiáng)大的嵌入式關(guān)系數(shù)據(jù)庫(kù)引擎[4],支持 SQL 語(yǔ)言。它占用空間低、運(yùn)行效率高,特別適合嵌入式設(shè)備,已經(jīng)成為一個(gè)健壯的數(shù)據(jù)存儲(chǔ)機(jī)制。Android平臺(tái)給開發(fā)者提供了一個(gè)SQLiteOpenHelper類,它是一個(gè)用來管理數(shù)據(jù)庫(kù)的創(chuàng)建和版本的輔助類,可以通過繼承這個(gè)類,實(shí)現(xiàn)它的一些方法來對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,其工作原理如圖1所示。

1.4.3 特點(diǎn)

SQLite是開源的輕量級(jí)嵌入式數(shù)據(jù)庫(kù)引擎,它比Mysql、PostgreSQL這些著名的數(shù)據(jù)庫(kù)管理系統(tǒng)都要快。同樣它也還是開源的,任何人都可以使用它。許多開源項(xiàng)目(Mozilla, PHP, Python)都使用了 SQLite。SQLite主要由SQL 編譯器、內(nèi)核、后端以及附件四個(gè)組件組成。SQLite 通過利用虛擬機(jī)和虛擬數(shù)據(jù)庫(kù)引擎使調(diào)試、修改和擴(kuò)展SQLite 的內(nèi)核變得更加方便,并且SQLite提供了可視化工具使得數(shù)據(jù)操作更加直觀。

2 結(jié)束語(yǔ)

本文分析了Android平臺(tái)的SharedPreferences、Files、SQLite、NetWork四種常用存儲(chǔ)機(jī)制的原理、使用步驟、關(guān)鍵類和優(yōu)缺點(diǎn),為開發(fā)人員在進(jìn)行存儲(chǔ)機(jī)制選擇時(shí)提供參考。在處理輕量級(jí)的數(shù)據(jù)存儲(chǔ)時(shí)選擇SharedPreferences用于配置應(yīng)用程序狀態(tài)和參數(shù)等簡(jiǎn)單信息。File存儲(chǔ)方式是最常用的,根據(jù)文件存儲(chǔ)的路徑分為內(nèi)部存儲(chǔ)和外部存儲(chǔ),當(dāng)需要確保文件不被其它應(yīng)用程序訪時(shí),選擇內(nèi)部存儲(chǔ),當(dāng)數(shù)據(jù)量較大時(shí),應(yīng)用程序通常將文件存儲(chǔ)在非默認(rèn)目錄下的文件存儲(chǔ)中即外部存儲(chǔ)器,例如一個(gè)microSD卡。為了提高應(yīng)用程序信息更新的及時(shí)性,方便信息推送,Android平臺(tái)使用NetWork網(wǎng)絡(luò)資源進(jìn)行存儲(chǔ),不僅獲得了額外的存儲(chǔ)空間,而且極大的方便了與服務(wù)器之間的信息交互,但是也會(huì)出現(xiàn)暴露用戶隱私的問題。為了更加高效的對(duì)文件進(jìn)行處理,在Android平臺(tái)上,集成了一個(gè)嵌入式關(guān)系型數(shù)據(jù)庫(kù)——SQLite。Android平臺(tái)提供了一個(gè)名為SQLiteOpenHelper的類,該類封裝了一些操作數(shù)據(jù)庫(kù)的API。通過SQLite可以使文件更加結(jié)構(gòu)化,是處理復(fù)雜文件的不二選擇。

參考文獻(xiàn):

[1] Kiwi Inc.Data Storage[EB/OL]. (2013-07-25).http://developer.android.com/guide/topics/data/index.html.

[2] Lauren D,Shane C.Android移動(dòng)開發(fā)一本就夠[M].李卉,譯.北京:人民郵電出版社,2011.

[3] 黃偉敏.Android平臺(tái)的即時(shí)通信系統(tǒng)客戶端設(shè)計(jì)方案[J].現(xiàn)代電子技術(shù),2011,34(16): 140-142.

[4] D Richard H.About SQLite[EB/OL]. (2013-07-25).http://www.sqlite.org/about.html.endprint

1.4.1 原理

SQLite是一個(gè)輕量級(jí)的強(qiáng)大的嵌入式關(guān)系數(shù)據(jù)庫(kù)引擎[4],支持 SQL 語(yǔ)言。它占用空間低、運(yùn)行效率高,特別適合嵌入式設(shè)備,已經(jīng)成為一個(gè)健壯的數(shù)據(jù)存儲(chǔ)機(jī)制。Android平臺(tái)給開發(fā)者提供了一個(gè)SQLiteOpenHelper類,它是一個(gè)用來管理數(shù)據(jù)庫(kù)的創(chuàng)建和版本的輔助類,可以通過繼承這個(gè)類,實(shí)現(xiàn)它的一些方法來對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,其工作原理如圖1所示。

1.4.3 特點(diǎn)

SQLite是開源的輕量級(jí)嵌入式數(shù)據(jù)庫(kù)引擎,它比Mysql、PostgreSQL這些著名的數(shù)據(jù)庫(kù)管理系統(tǒng)都要快。同樣它也還是開源的,任何人都可以使用它。許多開源項(xiàng)目(Mozilla, PHP, Python)都使用了 SQLite。SQLite主要由SQL 編譯器、內(nèi)核、后端以及附件四個(gè)組件組成。SQLite 通過利用虛擬機(jī)和虛擬數(shù)據(jù)庫(kù)引擎使調(diào)試、修改和擴(kuò)展SQLite 的內(nèi)核變得更加方便,并且SQLite提供了可視化工具使得數(shù)據(jù)操作更加直觀。

2 結(jié)束語(yǔ)

本文分析了Android平臺(tái)的SharedPreferences、Files、SQLite、NetWork四種常用存儲(chǔ)機(jī)制的原理、使用步驟、關(guān)鍵類和優(yōu)缺點(diǎn),為開發(fā)人員在進(jìn)行存儲(chǔ)機(jī)制選擇時(shí)提供參考。在處理輕量級(jí)的數(shù)據(jù)存儲(chǔ)時(shí)選擇SharedPreferences用于配置應(yīng)用程序狀態(tài)和參數(shù)等簡(jiǎn)單信息。File存儲(chǔ)方式是最常用的,根據(jù)文件存儲(chǔ)的路徑分為內(nèi)部存儲(chǔ)和外部存儲(chǔ),當(dāng)需要確保文件不被其它應(yīng)用程序訪時(shí),選擇內(nèi)部存儲(chǔ),當(dāng)數(shù)據(jù)量較大時(shí),應(yīng)用程序通常將文件存儲(chǔ)在非默認(rèn)目錄下的文件存儲(chǔ)中即外部存儲(chǔ)器,例如一個(gè)microSD卡。為了提高應(yīng)用程序信息更新的及時(shí)性,方便信息推送,Android平臺(tái)使用NetWork網(wǎng)絡(luò)資源進(jìn)行存儲(chǔ),不僅獲得了額外的存儲(chǔ)空間,而且極大的方便了與服務(wù)器之間的信息交互,但是也會(huì)出現(xiàn)暴露用戶隱私的問題。為了更加高效的對(duì)文件進(jìn)行處理,在Android平臺(tái)上,集成了一個(gè)嵌入式關(guān)系型數(shù)據(jù)庫(kù)——SQLite。Android平臺(tái)提供了一個(gè)名為SQLiteOpenHelper的類,該類封裝了一些操作數(shù)據(jù)庫(kù)的API。通過SQLite可以使文件更加結(jié)構(gòu)化,是處理復(fù)雜文件的不二選擇。

參考文獻(xiàn):

[1] Kiwi Inc.Data Storage[EB/OL]. (2013-07-25).http://developer.android.com/guide/topics/data/index.html.

[2] Lauren D,Shane C.Android移動(dòng)開發(fā)一本就夠[M].李卉,譯.北京:人民郵電出版社,2011.

[3] 黃偉敏.Android平臺(tái)的即時(shí)通信系統(tǒng)客戶端設(shè)計(jì)方案[J].現(xiàn)代電子技術(shù),2011,34(16): 140-142.

[4] D Richard H.About SQLite[EB/OL]. (2013-07-25).http://www.sqlite.org/about.html.endprint

1.4.1 原理

SQLite是一個(gè)輕量級(jí)的強(qiáng)大的嵌入式關(guān)系數(shù)據(jù)庫(kù)引擎[4],支持 SQL 語(yǔ)言。它占用空間低、運(yùn)行效率高,特別適合嵌入式設(shè)備,已經(jīng)成為一個(gè)健壯的數(shù)據(jù)存儲(chǔ)機(jī)制。Android平臺(tái)給開發(fā)者提供了一個(gè)SQLiteOpenHelper類,它是一個(gè)用來管理數(shù)據(jù)庫(kù)的創(chuàng)建和版本的輔助類,可以通過繼承這個(gè)類,實(shí)現(xiàn)它的一些方法來對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,其工作原理如圖1所示。

1.4.3 特點(diǎn)

SQLite是開源的輕量級(jí)嵌入式數(shù)據(jù)庫(kù)引擎,它比Mysql、PostgreSQL這些著名的數(shù)據(jù)庫(kù)管理系統(tǒng)都要快。同樣它也還是開源的,任何人都可以使用它。許多開源項(xiàng)目(Mozilla, PHP, Python)都使用了 SQLite。SQLite主要由SQL 編譯器、內(nèi)核、后端以及附件四個(gè)組件組成。SQLite 通過利用虛擬機(jī)和虛擬數(shù)據(jù)庫(kù)引擎使調(diào)試、修改和擴(kuò)展SQLite 的內(nèi)核變得更加方便,并且SQLite提供了可視化工具使得數(shù)據(jù)操作更加直觀。

2 結(jié)束語(yǔ)

本文分析了Android平臺(tái)的SharedPreferences、Files、SQLite、NetWork四種常用存儲(chǔ)機(jī)制的原理、使用步驟、關(guān)鍵類和優(yōu)缺點(diǎn),為開發(fā)人員在進(jìn)行存儲(chǔ)機(jī)制選擇時(shí)提供參考。在處理輕量級(jí)的數(shù)據(jù)存儲(chǔ)時(shí)選擇SharedPreferences用于配置應(yīng)用程序狀態(tài)和參數(shù)等簡(jiǎn)單信息。File存儲(chǔ)方式是最常用的,根據(jù)文件存儲(chǔ)的路徑分為內(nèi)部存儲(chǔ)和外部存儲(chǔ),當(dāng)需要確保文件不被其它應(yīng)用程序訪時(shí),選擇內(nèi)部存儲(chǔ),當(dāng)數(shù)據(jù)量較大時(shí),應(yīng)用程序通常將文件存儲(chǔ)在非默認(rèn)目錄下的文件存儲(chǔ)中即外部存儲(chǔ)器,例如一個(gè)microSD卡。為了提高應(yīng)用程序信息更新的及時(shí)性,方便信息推送,Android平臺(tái)使用NetWork網(wǎng)絡(luò)資源進(jìn)行存儲(chǔ),不僅獲得了額外的存儲(chǔ)空間,而且極大的方便了與服務(wù)器之間的信息交互,但是也會(huì)出現(xiàn)暴露用戶隱私的問題。為了更加高效的對(duì)文件進(jìn)行處理,在Android平臺(tái)上,集成了一個(gè)嵌入式關(guān)系型數(shù)據(jù)庫(kù)——SQLite。Android平臺(tái)提供了一個(gè)名為SQLiteOpenHelper的類,該類封裝了一些操作數(shù)據(jù)庫(kù)的API。通過SQLite可以使文件更加結(jié)構(gòu)化,是處理復(fù)雜文件的不二選擇。

參考文獻(xiàn):

[1] Kiwi Inc.Data Storage[EB/OL]. (2013-07-25).http://developer.android.com/guide/topics/data/index.html.

[2] Lauren D,Shane C.Android移動(dòng)開發(fā)一本就夠[M].李卉,譯.北京:人民郵電出版社,2011.

[3] 黃偉敏.Android平臺(tái)的即時(shí)通信系統(tǒng)客戶端設(shè)計(jì)方案[J].現(xiàn)代電子技術(shù),2011,34(16): 140-142.

[4] D Richard H.About SQLite[EB/OL]. (2013-07-25).http://www.sqlite.org/about.html.endprint

猜你喜歡
開源引擎應(yīng)用程序
刪除Win10中自帶的應(yīng)用程序
五毛錢能買多少頭牛
大家說:開源、人工智能及創(chuàng)新
開源中國(guó)開源世界高峰論壇圓桌會(huì)議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
開源計(jì)算機(jī)輔助翻譯工具研究
無(wú)形的引擎
基于Cocos2d引擎的PuzzleGame開發(fā)
三星電子將開設(shè)應(yīng)用程序下載商店
微軟軟件商店開始接受應(yīng)用程序
One?。牛睿纾椋睿濉。蹋澹妫糁皇O乱粋€(gè)引擎