hackerkevin

生命不息,奋斗不止

导航

Android本地数据存储复习

Android本地数据存储复习

Android无论是应用层还是系统层都需要在本地保存一些数据,尤其在应用层中使用的就更为普遍,大体有这么几种:SharedPreference,file,sqlite数据库。

SharedPreference

用于保存少量数据,如应用程序的各种配置信息。本质是一个Map对象,对应着key-value键值对。

SharedPreference本身是一个接口,在代码中使用getSharedPreference获取实例,该实例提供“读”的方法。而“写”的方法由SharedPreference.Editor方法提供。

SharedPreference数据以xml形式保存,保存在/data/data//shared-prefs目录下。

file

在通用的java对文件操作的io api的基础上,Android对文件的操作也有自己独特的API,如openFileOutput()和openFileInput(),分别用于获取对应文件的输出流和输入流。

打开的模式有以下四种:

  • MODE_PRIVATE
  • MODE_APPEND
  • MODE_WORLD_READABLE
  • MODE_WORLD_WRITEABLE

使用以上方法处理文件,文件的存储位置在/data/data//files目录下,但是一般情况下,手机的data分区的空间都十分稀缺,如果文件比较大,则建议存储在SD卡中。此时至少需要如下权限:

<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编辑  收藏  举报