Android本地数据存储复习
Android本地数据存储复习
Android无论是应用层还是系统层都需要在本地保存一些数据,尤其在应用层中使用的就更为普遍,大体有这么几种:SharedPreference,file,sqlite数据库。
SharedPreference
用于保存少量数据,如应用程序的各种配置信息。本质是一个Map对象,对应着key-value键值对。
SharedPreference本身是一个接口,在代码中使用getSharedPreference获取实例,该实例提供“读”的方法。而“写”的方法由SharedPreference.Editor方法提供。
SharedPreference数据以xml形式保存,保存在/data/data/
file
在通用的java对文件操作的io api的基础上,Android对文件的操作也有自己独特的API,如openFileOutput()和openFileInput(),分别用于获取对应文件的输出流和输入流。
打开的模式有以下四种:
- MODE_PRIVATE
- MODE_APPEND
- MODE_WORLD_READABLE
- MODE_WORLD_WRITEABLE
使用以上方法处理文件,文件的存储位置在/data/data/
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
需要注意的是,在Android4.4之后,手机的内置SD卡容量逐渐增大,Google在原始逻辑中不在提供次要SD卡的写权限,这也就导致目前越来越多的手机内置SD卡容量越来越大而不在提供外置SD卡的插卡槽。而早期的、尤其是需要在SD卡上读写文件的应用就需要在高版本上对该特性做出适配。
sqlite数据库
轻量级数据库,无需单独创建进程去执行数据库操作。应用层实际项目中会继承SQLiteOpenHelper类来打开或更新数据库,需复写两个方法onCreate()和onUpdate()方法。onCreate方法中主要生成数据库表结构和添加初始化数据,onUpdate方法中主要在软件或数据库版本升级的时候回使用。
很人性化的一点是,Android对sqlite数据库的API中提供两种方式操作数据库,一是直接使用SQL语句,使用execSQL方法;二是有特定的方法可以使用,如insert、delete等,其实在源码中这些方法最后也会把传入的参数组装成一个完整的SQL语句执行。
sqlite内部仅支持五种数据类型:
- NULL
- INTEGER
- REAL(浮点数)
- TEXT(文本)
- BLOB(较大的二进制对象)
Android还提供一个工具可以使用命令行查看数据库,sqlite3。该工具可以在sdk中找到,也可以在adb shell中执行。但是有些手机出厂时没有带该工具,所以咱们可以自己在源码中编译出该工具,然后push到手机中使用。关于sqlite3可以通过.help的方式查看帮助。
posted on 2015-08-16 23:09 hackerkevin 阅读(219) 评论(0) 编辑 收藏 举报