官方方案对比
SharedPreference
简称SP,使用键值对的形式保存原始类型的数据,默认以XML格式的文件来存储这些数据java
适用场景:存储量小、简单的数据
优缺点:有本身的内存级的缓存,在数据量小的时候读取较快,可是跨进程不安全,数据量大的时候加载缓慢,全量写入,容易引发ANR
SQLite
适用场景:比较复杂数据类型而且较大的数据量,成千上万的级别
优缺点:相比SP来讲,须要在数据量较大的时候才有优点,数据的获取较慢,大量写入须要注意使用事务批处理,性能较高,若是频繁的单次插入性能不高,直接经过sql操做比较繁琐,能够考虑orm框架
File
适用场景:顾名思义比较适用于文件类型的存储,如图片或者存储一些简单的文本数据或二进制数据
优缺点:最基本的存储方式,它不对存储的内容进行任何的格式化处理,全部数据都是原封不动地保存到文件当中的
小结
因为咱们目前使用的SP方案,咱们的痛点,性能差,和ANR问题,考虑换一种数据存储方案,首先咱们的数据存储的场景并非复杂数据类型,量上也不是太大,因此优先考虑的就是MMKV,为了更清楚的了解MMKV的优缺点,因此对比参考下android
开源方案对比
各类方案简介
名称
MMKV
Realm
WCDB
Room
方案
mmap
nosql
SQLCipher
SQLite
版本
1.0.24
6.0.2
1.0.8
2.2.3
size
0.15mb
1.5mb
0.7mb
0.05mb
迁移
从SP迁移方便
从SQLite迁移方便
场景
替换SP
替换SQLite
替换SQLite
替换SQLite
注: size 为armeabi-v7a架构下打包增量大小
mmkv包含lib_c++shared库的siz