Android数据存储的五种方式
1、SharedPreferences
2、文件存储
3、SQLite数据库
4、ContentProvider
5、网络存储
SharedPreferences
SharedPreferences特点: 适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等
SharedPreferences
(1)、两种获取SharePreferences对象的方法
- ①getSharedPreferences (String name, int mode)
- ②getPreferences (int mode)
文件存储
(1)、创建一个内部存储的私有文件
-
①调用Context的openFileOutput()函数,填入文件名和操作模式,它会返回一个FileOutputStream对象。
-
②通过FileOutputStream对象的write()函数写入数据。
-
③FileOutputStream对象的close ()函数关闭流。
SQLite数据库
(1)、SQLite储存特性
(1)ACID事务:指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
(2)零配置 – 无需安装和管理配置
(3)储存在单一磁盘文件中的一个完整的数据库
(4)数据库文件可以在不同字节顺序的机器间自由的共享
(5)支持数据库大小至2TB
(6)足够小, 大致3万行C代码, 250K
(7)比一些流行的数据库在大部分普通数据库操作要快
(8)简单, 轻松的API
ContentProvider
ContentProvider:为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。Android已经为常见的一些数据提供了默认的ContentProvider
1、ContentProvider使用表的形式来组织数据
无论数据的来源是什么,ContentProvider都会认为是一种表,然后把数据组织成表格
2、ContentProvider提供的方法
query:查询
insert:插入
update:更新
delete:删除
getType:得到数据类型
onCreate:创建数据时调用的回调函数
3、每个ContentProvider都有一个公共的URI,这个URI用于表示这个ContentProvider所提供的数据。Android所提供的ContentProvider都存放在android.provider包当中
对比这几种方式,可以总结下:
- 简单数据和配置信息,SharedPreference是首选;
- 如果SharedPreferences不够用,那么就创建一个数据库
- 结构化数据,一定要创建数据库,虽然这稍显烦锁,但是好处无穷
- 文件就是用来存储文件(也即非配置信息或结构化数据),如文本文件,二进制文件,PC文件,多媒体文件,下载的文件等等。
- 尽量不要创建文件
- 如果创建文件,如果是私密文件或是重要文件,就存储在内部存储,否则放到外部存储
- 不要收集用户数据,更不要发到网络上,虽然你们也有很多无奈。用户也无奈,也无辜,但更无助