对于应用携带的静态数据,能够放置在应用的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了。