資料存放區在開發中是使用最頻繁的,在這裡主要介紹Android平台中實現資料存放區的5種主要方式,分別是: 1 使用SharedPreferences儲存資料 2 檔案儲存體資料 3 SQLite資料庫儲存資料 4 使用ContentProvider儲存資料 5 網路儲存資料
第一種: 使用SharedPreferences儲存資料
適用範圍:儲存少量的資料,且這些資料的格式非常簡單:字串型、基本類型的值。比如應用程式的各種配置資訊(如是否開啟音效、是否使用震動效果、小遊戲的玩家積分等),解鎖口 令密碼等
核心原理:它的本質是基於XML檔案儲存體key-value索引值對資料,通常用來儲存一些簡單的配置資訊。其儲存位置在/data/data/< >/shared_prefs目錄下。
SharedPreferences本身是一個介面,程式無法直接建立SharedPreferences執行個體,只能通過Context提供的getSharedPreferences(String name, int mode)方法來擷取SharedPreferences執行個體,該方法中K值name表示要操作的xml檔案名稱,第二個參數索引值具體如下:
實現SharedPreferences儲存的步驟如下: 一、根據Context擷取SharedPreferences對象 二、利用edit()方法擷取Editor對象。 三、通過EditorObject Storage Servicekey-value索引值對資料。 四、通過commit()方法提交資料。
Context.MODE_PRIVATE: 指定該SharedPreferences資料只能被本應用程式讀、寫。
Context.MODE_WORLD_READABLE: 指定該SharedPreferences資料能被其他應用程式讀,但不能寫。
Context.MODE_WORLD_WRITEABLE: 指定該SharedPreferences資料能被其他應用程式讀,寫
SharedPreferences與SQLite資料庫相比,免去了建立資料庫,建立表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其只能儲存boolean,int,float,long和String五種簡單的資料類型,比如其無法進行條件查詢等。所以不論SharedPreferences的資料存放區操作是如何簡單,它也只能是儲存方式的一種補充,而無法完全替代如SQLite資料庫這樣的其他資料存放區方式。
第二種: 檔案儲存體資料 關於檔案儲存體,Activity提供了openFileOutput()方法可以用於把資料輸出到檔案中,具體的實現過程與在J2SE環境中儲存資料到檔案中是一樣的。 檔案可用來存放大量資料,如文本、圖片、音頻等。 預設位置:/data/data/< >/files/***.***。
可以在裝置本身的存放裝置或者外接的存放裝置中建立用於儲存資料的檔案。同樣在預設的狀態下,檔案是不能在不同的程式間共用。
寫檔案:調用Context.openFileOutput()方法根據指定的路徑和檔案名稱來建立檔案,這個方法會返回一個FileOutputStream對象。
讀取檔案:調用Context.openFileInput()方法通過制定的路徑和檔案名稱來返回一個標準的JavaFileInputStream對象。 第三種:SQLite儲存資料
SQLite Database資料庫。Android對資料庫的支援很好,它本身整合了SQLite資料庫,每個應用都可以方便的使用它,或者更確切的說,Android完全依賴於SQLite資料庫,它所有的系統資料和用到的結構化資料都儲存在資料庫中。 SQLite是輕量級嵌入式資料庫引擎,它支援 SQL 語言,並且只利用很少的記憶體就有很好的效能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLite.SQLite 由以下幾個組件組成:SQL 編譯器、核心、後端以及附件。SQLite 通過利用虛擬機器和虛擬資料庫引擎(VDBE),使調試、修改和擴充 SQLite 的核心變得更加方便。
SQLite它具有以下優點:
1..效率出眾
2. 十分適合儲存結構化資料
3. 方便在不同的Activity,甚至不同的應用之間傳遞資料。 4.面向資源有限的裝置 5.沒有伺服器處理序, 6.所有資料存放在同一檔案中跨平台, 7.可自由複製。
資料庫儲存在 data/< 專案檔夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。 第四種:ContentProvider
Android系統中能實現所有應用程式共用的一種資料存放區方式,由於資料通常在各應用間的是互相私密的,所以此儲存方式較少使用,但是其又是必不可少的一種儲存方式。例如音頻,視頻,圖片和通訊錄,一般都可以採用此種方式進行儲存。每個ContentProvider都會對外提供一個公用的URI(封裝成Uri對象),如果應用程式有資料需要共用時,就需要使用ContentProvider為這些資料定義一個URI,然後其他的應用程式就通過Content Provider傳入這個URI來對資料進行操作。
第五種:網路儲存 網路一般用於需要即時傳輸資料,由於移動產生流量需要資費,並且現在中國大陸地區的網路速度不盡人意,所以通過網路發送資料時需要注意資料量,如非必要,也不要使用網路發送。但是如果有些資料在移動端不能處理或者處理比較麻煩時,可以考慮通過網路發送到伺服器處理。 總結:
1.簡單的資料與配置資訊,SharedPreferences 是首選 2.如果資料量太大,SharedPreferences 不夠用,可以考慮使用資料庫,處理關係比較複雜。 3.對於結構化的資料,一定要使用資料庫,雖然會顯得比較麻煩,但是後續的使用中會獲益無窮 4.普通檔案就是指文字檔,二進位檔案,多媒體檔案等等 5.盡量不要去建立檔案,利用 API 提供的檔案儲存體方式去儲存(SharedPreferences,資料庫) 6.如果一定要建立檔案,假設該檔案是私密檔案或者重要檔案,則一定要儲存在內部儲存中,反之存放到外部儲存即可 7.使用網路儲存時要避免傳輸大資料量資料,應注意對網路傳輸方式的最佳化(減少請求次數等)