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

Android本地数据存储复习的更多相关文章
- Android本地数据存储: ASimpleCache
一:前言 在上一篇博客Android本地数据存储: Reservoir 博客中,我提到,除了Reservoir库,还可以采用ASimpleCache开源库,来实现本地数据存储.昨天并没有仔细的对比Re ...
- Android本地数据存储: Reservoir
一:前言 今天做项目,准备使用本地存储,把一些数据存在本地磁盘上,比如用户名.密码这样的.其实大家都知道,这种情况最常用的就是SharedPreferences了,我也不例外,脑子里第一个想到的就是用 ...
- 理解 Android 本地数据存储 API
利用首选项.SQLite 和内部及外部内存 API 对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能.作为一名开发人员,您经常需要存储诸 ...
- Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase
数据库的创建,获取,执行sql语句: 框架搭建:dao 思考: 1.数据库保存在哪里? 2.如何创建数据库?如何创建表? 3.如何更新数据库?如何更改表的列数据? 4.如何获取数据库? 5.如何修改数 ...
- [安卓安全] 01.安卓本地数据存储:Shared Preferences安全风险浅析
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Android之ListView,AsyncTask,GridView,CardView,本地数据存储,SQLite数据库
版权声明:未经博主允许不得转载 补充 补充上一节,使用ListView是用来显示列表项的,使用ListView需要两个xml文件,一个是列表布局,一个是单个列表项的布局.如我们要在要显示系统所有app ...
- android学习笔记45——android的数据存储和IO
android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...
- Android实现数据存储技术
转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...
- Android中数据存储(一)
国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...
随机推荐
- robot framework 安装配置
robot framework 是一款专门用作自动化测试的框架,提供了丰富的内置库,与第三方库,也支持用户自己编写的库,robot framework +library 可以 用来做ui的自动化测试, ...
- ngix代理-- 摘抄
有两个网站,http://192.168.1.3:80和http://192.168.1.3:81, 通过nginx的配置实现只用本机作为唯一的代理服务器,只用一个端口, 实现这样的效果:请求http ...
- 集合的概念 Stack和Queue Dictionary ArrayList和List<T>方法及用法
Stack和stack<T>方法一样// 管理方式: 后进先出 LIFO 栈// Stack<string> s=new Stack<string>();//(放一 ...
- CC1310电源
CC1310的电源好扯,把目前遇到的问题记录一下 1 全局LDO和DCDC的输出电压问题 手册上要求的VDDR和VDDR_RF的电压范围是1.7~1.95V,但实际测试时, 在接收状态下无论是全局LD ...
- 说说我的企业级应用上线历程(A little different!)
刚到公司时,我还是一个个人应用都没上线过的小白一枚,甚至都不知道.p12文件,不知道个人应用上线所使用的证书只能是自己机子创建的发布证书才可以打包上线,不知道企业级应用如何打包,不巧的是我还赶上了 i ...
- 博弈论揭示了深度学习的未来(译自:Game Theory Reveals the Future of Deep Learning)
Game Theory Reveals the Future of Deep Learning Carlos E. Perez Deep Learning Patterns, Methodology ...
- Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试
本文是本人前一段时间做一个简单Java监控工具调研总结,主要包括VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,以及对Java微基准测试的简单介绍, ...
- .net学习笔记--使用抽象方法实现多态
在使用抽象方法实现多态之前,我们必须知道一些知识点: 1.抽象类不能被实例化: 2.抽象类可以包含非抽象成员,它们可以由其子类继承调用. 我们可以先创建一个Person的抽象类,代码如下: abstr ...
- swoole 使用 1
在很长的一段时间里,我不太看好swoole,发现它的文档太少,社区也不够活跃等,但是最近在学习 Hprose时,发现swoole在rpc方面做得更加完善,于是决定看看. 在简单的使用swoole扩展后 ...
- PHP从mysqli中获取的资源$result是不是不能while($row = $result->fetch_assoc())这样两次?【坑】
PHP从mysqli中获取的资源$result是不是不能while($row = $result->fetch_assoc())这样两次? 因为我这样做,结果后面的查询结果就无法显示了,目前尚不 ...