對於應用攜帶的靜態數據,能夠放置在應用的assets目錄或者res,raw目錄下。
對於assets目錄下的靜態數據,存在當文件最大支持1MB的侷限,讀取方式以下: 緩存
1 |
InputStream is = getAssets().open("xxx.xx"); |
對於res,raw目錄下的文件,能夠經過以下方式讀取: 網絡
1 |
InputStream is = resources.openRawResource.(R.raw.xxx); |
另外,Android還對建立緩存提供了支持,經過getCacheDir()能夠獲取應用的緩存路徑,在系統可用空間不足時,Android會清空緩存,但對於開發者而言,不該維護過多的緩存。用戶能夠經過系統的設置來手動清空緩存,有人也用這個緩存來作圖片的緩存,可是吧,雖然少了用了流量,可是對程序的效率來講就只是縮短了一個網絡下載時間而已。開發者能夠根據本身應用的特性來選擇是否使用這個緩存空間。 spa
Android支持在SD卡上的應用私有目錄,在Froyo版本後,經過getExternalFilesDir()能夠得到具體路徑。該路徑依賴與應用的包名,若是你包爲hello.file那麼SD開上的應用私有目錄爲\mnt\sdcard\Android\data\hello.file\files\.若是但願存儲在SD卡上的公共目錄下,能夠經過getExternalStoragePublicDirectory()公共目錄的具體路徑視須要存儲的文件類型而定。 xml
SD上的應用須要的緩存較大,也能夠在SD卡上創建緩存目錄,在Froyo版本後,經過getExternalCacheDir()能夠獲取應用在SD卡上的緩存路徑。在使用SD卡目錄時,需注意SD卡是否掛載,可經過Environment.getExternalStorageState()方法進行判斷,若是返回值爲Envirnment.MEDIA_MOUNTED表示SD卡處於掛載狀態,能夠放心使用。 圖片
SQLite的中的事務處理。當須要一次性修改多個數據時,建議經過SQLite的事務處理進行批量處理,這有利於提升執行的效率。事務處理相關的方法以下: 事務
1 |
public void beginTransaction(); |
2 |
public void beginTransactionWithListener(SQLiteTransactionListener transactionListener); |
3 |
public void endTransaction(); |
4 |
public void inTransaction(); |
5 |
public void setTransactionSuccessful(); |
此外還有使用SharedPreferences來存儲的xml文件,究其本質其實仍是<key,value>值對。Android中XML文件更多的用來維護應用或者系統的配置文件,咱們在開發中通常用SharedPreferences也是保存一些應用的配置信息,記錄用戶的某些操做,例如:用戶是否是第一次進入應用,用戶是否選擇了保存用戶名和密碼和用戶的某些偏好設置等等,Android根據配置信息是否對其餘應用開放,SharedPreferences提供了兩種權限,MODE_PRIVATE和MODE_WORLD_READABLE。該數據存放在\data\data\包.名\shared_prefs文件夾下,文件擴展名爲.xml。數據以這種形式存儲: 開發
<map><boolean name="firstFlag" value="true" /></map>
獲取SharedPreferences的方法:(該變量通常做爲全局變量,放到Activity的OnCreate方法中初始化,我遇到有人在方法中獲取不到這個變量的錯誤,該成全局的就獲取到了。) get
1 |
SharedPreferences sp = getSharedPreferences("存儲xml文件的名字",MODE_PRIVATE); |
得到數據的方法:
1 |
String msg = sp.getString("存儲的key","若是沒保存則會得到的數據"); |
msg就是你保存的數據,若是沒有保存,那麼得到就是你後面設置的默認數據
對其編輯的方法:
1 |
Editor editor = sp.edit(); |
2 |
editor.putString(key, value); |
3 |
editor.commit();//必定不要忘記提交,不然就保存不到文件中。 |
若是但願配置信息對其餘應用開放,
在設置權限時,可以使用
MODE_WORLD_READABLE,
其餘應用要得到該配置信息時,必須先獲取相應的上下文:
1 |
context =createPackageContext("全包名",Context_CONTEXT_IGNORE_SECURITY); |
2 |
SharedPreferences sp = context.getSharedPreferences("存儲xml文件的名字",MODE_PRIVATE); |
在實際開發中,必定要對得到context進行是否爲null的判斷,有些時候咱們打不開,或因權限不足,或由於應用已經被用戶刪除。
須要說明的是,在PreferenceActivity中內置了對SharedPreferences的支持。若是但願進一步瞭解的用戶能夠查看一下相似ListPreference的用法。
其次Android還提供了內部存儲方式,
開發者能夠將數據存儲在應用的私有空間中,避免其餘程序訪問。其權限在Context下,有:
MODE_PRIVATE,MODE_APPEND,MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE
等。內部
存儲所在的目錄爲:/date/date/包.名/files
寫入數據可讀數據 也很簡單:
1 |
FileOutputStream fos = context.openFileOutput(file,Context_MODE_WORLD_WRITEABLE); |
5 |
FileInputStream fis = context.openFileInput("fileName"); |
接下來跟日常文件同樣讀入 就ok了。