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的方式查看帮助。

Android本地数据存储复习的更多相关文章

  1. Android本地数据存储: ASimpleCache

    一:前言 在上一篇博客Android本地数据存储: Reservoir 博客中,我提到,除了Reservoir库,还可以采用ASimpleCache开源库,来实现本地数据存储.昨天并没有仔细的对比Re ...

  2. Android本地数据存储: Reservoir

    一:前言 今天做项目,准备使用本地存储,把一些数据存在本地磁盘上,比如用户名.密码这样的.其实大家都知道,这种情况最常用的就是SharedPreferences了,我也不例外,脑子里第一个想到的就是用 ...

  3. 理解 Android 本地数据存储 API

    利用首选项.SQLite 和内部及外部内存 API 对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能.作为一名开发人员,您经常需要存储诸 ...

  4. Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase

    数据库的创建,获取,执行sql语句: 框架搭建:dao 思考: 1.数据库保存在哪里? 2.如何创建数据库?如何创建表? 3.如何更新数据库?如何更改表的列数据? 4.如何获取数据库? 5.如何修改数 ...

  5. [安卓安全] 01.安卓本地数据存储:Shared Preferences安全风险浅析

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. Android之ListView,AsyncTask,GridView,CardView,本地数据存储,SQLite数据库

    版权声明:未经博主允许不得转载 补充 补充上一节,使用ListView是用来显示列表项的,使用ListView需要两个xml文件,一个是列表布局,一个是单个列表项的布局.如我们要在要显示系统所有app ...

  7. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  8. Android实现数据存储技术

    转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...

  9. Android中数据存储(一)

    国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...

随机推荐

  1. MongoDB释放磁盘空间

    1. 先删除旧的文档db.remove({}): 2. 从副本集中移除待清理的成员: (1) 登录副本集中的 Primary 服务器(/opt/mongo1/bin/mongo --port 2701 ...

  2. JS中this的指向问题

    JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象). this一般情况下都代表的是global对象,在浏览器中就是window对象 ...

  3. sql group by datetime on day

    SELECT        DATEADD(dd, DATEDIFF(dd, 0, postDate), 0)FROM          tableWHERE        (postDate > ...

  4. centos安装python

    安装Development tools yum groups install -y 'development tools' yum install -y zlib-dev openssl-devel ...

  5. 向 Git 服务器添加 SSH 公钥

    . . . . . 在网上很少找到文章有提到如何将自己的 Git 远程仓库配置成可以通过 SSH 公钥方式认证的,而几乎清一色都是告诉你怎么通过 web 界面向 GitHub 添加 SSH 公钥.LZ ...

  6. 去除inline-block元素间间距,比较靠谱的两种办法

    1.使用注释符号 <div><span class="1">1</span></div><!-- --><div& ...

  7. MySQL binlog基本操作

    常用操作: 1. 设置启用binlog log-bin = binlog 2. 设置全备和增量备份 #crontab -e * 0 * * 7 /usr/bin/mysqldump mybinlog ...

  8. Flask备注二(Configurations, Signals)

    Flask备注二(Configuration, Signals) Flask是一个使用python开发Web程序的框架.依赖于Werkzeug提供完整的WSGI支持,以及Jinja2提供templat ...

  9. Centos | Linux 下安装启动 mysql 出现 8618 [ERROR] Aborting,查看日志:Plugin 'FEDERATED' is disabled.

    1.试试启动时指定配置文件 ./bin/mysqld_safe --defaults-file=mysql.cnf 或 ./bin/mysqld_safe --defaults-file=mysql. ...

  10. rdlc报表DEMO

    rdlc报表demo  .net 4.0  vs2013 文本框,图像控件,checkbox样式的打印 下载链接