編輯:高級開發
android 手機操作系統是一款基於Linux平台的開源操作系統。它應用於手機中能夠幫助我們實現許多需求。比如今天為大家介紹的android保存數據,就是其中一個比較重要的操作技巧。
對於我們所熟悉的大部分軟件都有一個比較典型的特點,應用現有的數據根據不同的需求來得到相應的結果。例如,我們最常用的OfficeWord、Excel、PowerPoint等辦公軟件,它們都是幫助我們完成某種特定的需求,同時由其所產生的數據或者文檔又可以被其它軟件所讀取和做進一步的優化等等,在這個層面上可以看成是這些軟件通過相同的文件標准來共享數據。但是對於android最大的不同點在於,其平台上的應用軟件所存儲的數據或者文件是私有,僅僅可以通過它自身才可以訪問其所包含的數據資源。
那麼基於這樣的限制,該如何在android平台上實現不同程序間的數據共享呢?答案非常簡單 – 應用ContentProviders,這是建立在Android平台上用於定義統一的數據標准。android提供了針對不同數據類型的ContentProviders來滿足各種需要。例如:Image、Audio、Video和通訊錄信息類等。閱讀下邊的文檔之前,最好先熟悉Content Providers的概念。
有了上邊所提到Content Providers,接下來就要處理在共享文件過程中的存儲環節了,這裡有四種方法分別適用於不同情況的需求。它們都各自有相應的優缺點,所以當開發者決定選擇應用哪種方法之前,先要考慮當前所操作的情況是否適合於所選擇的方法。
- Preferences
- Files
- Databases
- Network
接下來將依次介紹上訴四個android保存數據方法:
Preferences從其保存數據的結構來分析,這是一個相對較輕量級的存儲數據的方法。類似於我們常用的ini文件保存軟件初始化設置,同樣在android平台常用於存儲較簡單的參數設置。例如,可以通過它保存上一次用戶所作的修改或者自定義參數設定,當再次啟動程序後依然保持原有的設置。
通過Context.getSharedPreferences()方法來讀寫數值,這個方法通過設置name來使得同一個程序內的其它模塊共享數據。如果不需要與其它模塊共享數據,可以使用Activity.getPreferences()方法保持數據私有。需要著重強調一點,無法直接在多個程序間共享Preferences數據(不包括使用Content Providers)。
通過一個實例來了解實際使用方法:
- import android.app.Activity;
- import android.content.SharedPreferences;
- public class Calc extends Activity {
- public static final String PREFS_NAME = "MyPrefsFile";
- . . . .
- Override
- protected void onCreate(Bundle state){
- super.onCreate(state);
- . . . .
- // Restore preferences
- SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
- boolean silent = settings.getBoolean("silentMode", false);
- setSilent(silent);
- }
- @Override
- protected void onStop(){
- super.onStop();
- // Save user preferences. We need an Editor object to
- // make changes. All objects are from android.context.Context
- SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
- SharedPreferences.Editor editor = settings.edit();
- editor.putBoolean("silentMode", mSilentMode);
- // Don't forget to commit your edits!!!
- editor.commit();
- }
- }
Files從這是第二種方法,可以在設備本身的存儲設備或者外接的存儲設備中創建用於保存數據的文件。同樣在默認的狀態下,文件是不能在不同的程序間共享。
寫文件:調用Context.openFileOutput()方法根據指定的路徑和文件名來創建文件,這個方法會返回一個FileOutputStream對象。
讀取文件:調用Context.openFileInput()方法通過制定的路徑和文件名來返回一個標准的Java FileInputStream對象。
(注意:在其它程序中將無法應用相同的路徑和文件名來操作文件)
另外編譯程序之前,在res/raw/tempFile中建立一個static文件,這樣可以在程序中通過Resources.openRawResource (R.raw.myDataFile)方法同樣返回一個InputStream對象,直接讀取文件內容。
Databases在android API中包括了應用SQLite databases的接口,每個程序所創建的數據庫都是私有的,換句話說,程序間無法相互訪問對方的數據庫。
在程序中創建SQLiteDatabase對象,其中包含了大部分與database交互的方法,例如:讀取數據或者管理當前數據。可以應用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法來創建新的數據庫。
對於SQLitedatabase而言,其強大和方便的功能為Android提供了強有力的存儲功能。特別是存儲一些復雜的數據結構,例如:android特別為通訊錄創建了特有的數據類型,其中包含了非常多的子集而且涵蓋了大部分的數據類型 “First Name” “Last Name” “PhoneNumber”和“Photo”等。
android可以通過Sqlite3 database tool來查看指定數據庫中表的內容,直接運行SQL命令來快速便捷的直接操作SQLite database。
數據庫在設備中保存的地址是 /data/data/package_name/databases
Network通過網絡來獲取和保存數據資源,這個方法需要設備保持網絡連接狀態,所以相對存在一些限制。下面列出了兩個用於相關操作的類:
- Java.Net.*
- android.Net.*
以上是四種Android保存數據的方法常用於針對android平台來存儲和讀取數據的方法。
在前文中我們介紹了android添加很多新功能,本文我們將介紹在android平台下,如何開發聊天客戶端Demo版軟件。由於時間關系,寫的斷斷續續,到現在也只是實現一部
為什麼要推出android J2ME程序?是什麼讓這些用戶喜歡谷歌推出的這款操作系統,有的人說可以媲美iPhone?這些問題對於欲了解android平台智能手機,和想了
android手機運用的操作系統的核心系統服務依賴於 Linux 2.6 內核,如安全性,內存管理,進程管理,網絡協議棧和驅動模型,這些都由一個任務管理器來控制,既方便
Google不做惡,蘋果要作惡?其實刪掉競爭對手的描述,其實也是一種合理的商業手段。只是這樣的要求,顯得蘋果有些不厚道,不知道Google怎麼反擊。iPad的發布,在5