2020-08-23 11:31:39
鉴于SP的"种种问题",萌发了想要使用写文件的方式替换掉sp的想法,发现腾讯开源MMKV是个不错的选择。
存储方式
- SharedPreferences
- ContentProvider
- 文件
- 数据库
如何选择
时间开销 | 这里说的时间开销包括了CPU时间和/0时间,在I/O优化中我就多次提到相比CPU和内存,I/0存储的速度是非常慢的。但是如果存储方法中比如编解码或者加密/解密等设计的比较复杂,整个数据存储过程也会出现CPU时间变得更长的情况 |
正确性 | 选择存储方案的时候,第一个需要判断它是否靠谱。这套存储方案设计是否完备,有没有支持多线程或者跨进程同步操作。内部是否健壮,有没有考虑异常情况下数据的校验和恢复,比如采用双写或者备份文件策略,即使主文件因为系统底层导致损坏,也可以一定程度 上恢复大部分数据 |
空间开销 | 即使相同的数据如果使用不同的编码方式,最后占用的存储空间也会有所不同。举一个简单的例子,相同的数据所占的空间大小是XML>JSON>ProtocolBuffer。除了编码方式的差异,在一些场景我们可能还需要引入压缩策略来进-步减少存储空间,例如zip、lzma等。数据存储的空间开销还需要考虑内存空间的占用量,整个存储过程会不会导致应用出现大量GC、OOM等 |
安全 | 应用中可能会有一些非常敏感的数据,即使它们存储在/data/data中, |