Android 數據存儲數據庫
Android中數據存儲的方式有一下幾種:緩存
一.SharedPreferences :安全
是一種輕量級的數據存儲方式,主要用於保存應用的一些經常使用配置,以xml 文件的方式存儲數據,
網絡
以鍵值對的方式存取數據。
app
SharedPreferences 的類型(MODE):ide
MODE_PRIVATE :私有類型,只容許本應用使用,這個爲默認類型函數
MODE_APPEND :若是SharedPreferences 文件已經存在,則數據寫入這個文件的末尾spa
MODE_WORLD_READABLE : 容許其餘app讀取數據 ,這個值在API 17 被廢除了(可能爲了保護數據安全)
xml
MODE_WORLD_WRITEABLE : 容許其餘app寫入數據 ,這個也是 在 API 17 廢除
對象
獲取SharedPreferences 的兩種方式:
getSharedPreferences(String name,int MODE);得到的對象能夠被同一應用程序下的其餘組件共享
getPreferences(); 得到的SharedPreferences對象只能在該Activity中使用.
保存數據:
SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);
SharedPreferences.Editor editor = sp.edit();
editor.put(String key,String value);
editor.commit(); 提交數據
讀取數據:
SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);
String value = sp.get(String key);
二.基於Java IO 方式的 file:
IO操做數據有兩種不一樣的類型:私有的file,存放在data/data/目錄下, 另外一個是對SDcard操做
1.私有file:
保存數據:MODE 和SharedPreferences 同樣
FileOutputStream fo = Context.openFileOutput(String name,int MODE)
讀取數據:
FileInputStream fi = Context.openFileInput(String name)
2.對SDCard 的數據進行操做:這裏涉及到一個 Environment 類,它是用來管理Android 內部存儲和SDcard的
其中包含了sdcard的一些字段 表示sd卡當前的狀態:
MEDIA_BAD_REMOVAL 在沒有掛載前存儲媒體已被移除
MEDIA_CHECKING 正在檢查存儲媒體
MEDIA_MOUNTED 存儲媒體已掛載,而且掛載點可讀寫
MEDIA_MOUNTED_READ_ONLY 存儲媒體已掛載,但只可讀
MEDIA_NOFS 存儲媒體是空白或不支持的文件系統
MEDIA_REMOVED 存儲媒體被移除
MEDIA_SHARED 存儲媒體正在經過USB共享
MEDIA_UNMOUNTABLE 存儲媒體沒法掛載
MEDIA_UNMOUNTED 存儲媒體沒有掛載
Environment 中的一些靜態方法:
獲取Android 根目錄 File root = Environment.getRootDirectory();
獲取data目錄 File data = Environment.getDataDirectory();
獲取 Android 下載/緩存內容目錄 File file = Environment.getDownloadCacheDirectory();
獲取SDCard狀態 :Environment.getExternalStorageState();
獲取SDCard根目錄:File root = Environment.getExternalStorageDirectory();
對SDCard進行數據存取的話,首先獲取sdcard 的狀態,判斷sdcard是掛載,若是掛載了sdcard
則獲取Sdcard 的根目錄,而後和本身建立的文件的目錄拼接成一個文件的存放目錄,最後用IO便可
(這裏有個小細節:File類型的量能夠和字符串直接用「+」拼接,而後變成字符串)
File root = Environment.getExternalStorageDirectory();//獲取sdcard根目錄
File file = new File(root+File.separator+"MyFile.txt"); separator 爲路徑分隔符
三.SQLite 數據庫:
Android 內置的SQLite是一種輕量級的數據庫,SQL數據庫的功能它基本都有
Android操做SQLite涉及到兩個類 :
SQLiteDataBase :SQLite數據庫類,這個類沒有構造函數,其對象是經過SQLiteOpenHelper 類獲取的
這類具備數據庫的增刪查改等方法,還能夠調用execSQL() 方法來執行標準的SQL語句
SQLiteOpenHelper :數據庫輔助類,這個類是用來獲取已有的數據庫 或者 建立新的數據庫以及數據庫
版本號。SQLiteOpenHelper中有兩個抽象方法,用於建立數據庫中的表格,和升級數據庫用 的,這兩個方法須要用戶本身去實現
建立一個類MyDataBase繼承 SQLiteOpenHelper
public MyDataBase(Context context){ 構造函數
super(Context context,String dataBaseName,null,int DataBaseVersion);父類構造函數
}
實現其中的抽象方法:
onCreate(SQLiteDataBase db){
db.execSQL(String s); 在次執行SQL語句建立表格
}
onUpgrade(SQLiteDataBase db,int oldVersion,int newVersion){} 當數據庫版本號改變是調用
四.ContentProvider 數據共享:
五.基於 Java Socket/http 的網絡存儲 :