本章节讲存储,大概会是这样的目录结构:
- 存储方式
- 常用存储组件:GreenDao、Realm。
- 组件化存储
存储方式
Android的存储大概有SharePreference、File I/O、Sqlite、ContentProvider、网络。
SharePreferences
轻量级数据存储。存储简单数据类型,以Key/Value的形式进行储存。
原理:
对XML进行修改。
适用:
1.存储一些基础的配置信息;
2.boolean、int、float、long、String等基础信息的存储
File I/O
用 流的方式进行操作,直接对二进制数据进行操作
Sqlite
Android版本的 轻量级数据库,AndroidSDK中自带的是SQLite。
ContentProvider
提供文件、图片、对象、数据库等多种类型的操作。
网络
现在我们一般用Retrofit、volley、okhttp进行发送数据,主要是json、xml格式。
Sqlite & GreenDAO & Realm对比
这里的性能对比,是从网上搜的。并没有自己去做对比。
这一块网上信息挺多的。就不加复述了。
插入时间对比
插入时间(ms) | SQlite | GreenDao | Realm |
---|---|---|---|
10条 | 18 | 16 | 8 |
100条 | 75 | 65 | 37 |
1000条 | 392 | 419 | 132 |
10000条 | 2365 | 2992 | 874 |
删除时间对比
删除时间(ms) | SQlite | GreenDao | Realm |
---|---|---|---|
10条 | 12 | 16 | 4 |
100条 | 8 | 29 | 4 |
1000条 | 12 | 261 | 8 |
10000条 | 69 | 2327 | 56 |
修改时间对比
更新时间(ms) | SQlite | GreenDao | Realm |
---|---|---|---|
10条 | 8 | 12 | 4 |
100条 | 10 | 41 | 12 |
1000条 | 20 | 318 | 96 |
10000条 | 80 | 3179 | 578 |
体积大小对比
体积大小 | SQlite | GreenDao | Realm |
---|---|---|---|
0 KB | 140KB | 1.7M(仅 armeabi-v7a so 体积),其他平台体积更大 |
如何选择数据库呢?
GreenDao使用Android底层的Sqlite进行封装。
Realm使用本身的引擎,需要引入额外的库。
从性能上说:Realm 总体上,优于 GreenDao。
从体积上讲,GreenDao完胜。
切主题:
App对本地数据库的依赖程度
如果需要大量本地缓存非常多的数据。那毫无疑问,Realm。反之,GreenDao。
App体积的考量
那肯定是GreenDao。
操作易用性
GreenDao是ORM数据库中非常简便的。Realm也差不多。
综合考虑一下,我没有接触过 需要大量读写数据库操作的App。
易用性、体积是我的首要考虑,所以,我一般都是GreenDao。
组件化存储
组件化情景下,使用关系型数据库,首要考虑 解耦。
GreenDao是ORM关系型数据库。需要将实体对象转化为数据映射。
这就需要一个统一的module来管理这些类的产生和引用。
我的策略是:
将数据库层独立为一个module,并入 Base层。
其他组件均依赖Base Module。
实际上,我略微有点调整。多了一个core层。