组件化攻略-数据存储

本文深入探讨Android应用中的存储方式,包括SharePreference、FileI/O、Sqlite、ContentProvider及网络存储,对比分析GreenDao、Realm与Sqlite的性能,讨论数据库选择策略,以及组件化存储的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
本章节讲存储,大概会是这样的目录结构:

  • 存储方式
  • 常用存储组件: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)SQliteGreenDaoRealm
10条18168
100条756537
1000条392419132
10000条23652992874
删除时间对比
删除时间(ms)SQliteGreenDaoRealm
10条12164
100条8294
1000条122618
10000条69232756
修改时间对比
更新时间(ms)SQliteGreenDaoRealm
10条8124
100条104112
1000条2031896
10000条803179578
体积大小对比
体积大小SQliteGreenDaoRealm
0 KB140KB1.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层。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值