一、MMKV的起源:
微信为了能找到导致崩溃的这些特殊字符,必须要在崩溃之前保存用户发送的文本,找到哪些特殊字符导致崩溃。使用同步保存,写入速度过慢,大量聊天的写入更加会导致卡顿,使用异步的方式,有可能崩溃发生但是数据并没有保存下来。诞生一种方案,是通过内存映射磁盘,就是内存的数据会自动映射到磁盘。它的速度比较快,而且不会因为崩溃导致数据的丢失,这就是MMKV。
MMKV的优势:
1.它的同步保存数据速度快。
2.它支持多进程保存数据。
劣势:
1.连续的大量数据保存的时候,mmkv的速度可能会更慢。
2.mmkv有丢失数据的几率(意外情况不会自动备份)。
SharedPreferences 劣势:
1.不支持多进程
2.卡顿、anr
3.同步比较耗时
4.异步无法回调。
DataStore优势
1.性能好,读写文件都在后台完成。
2.容易异步回调,采用协程实现的,容易切换线程。
劣势:
1.不支持多进程
总结:
- 如果你有多进程支持的需求,MMKV是唯一的选择。
- 如果你有高频写入的需求,优先考虑MMKV,但是它有很小的概率丢失数据,是否采取备份方案。
- 如果没有多进程和高频写入的需求,DateStore作为最完美的方案,优先被考虑。
- MMKV在写大字符串的时候和初次加载文件的时候,是可能卡顿的,只要文件大到卡顿条件,每次都会卡顿。这个在SharedPreferences 中也是有的。
- 如果没有使用kotlin和协程是没有办法使用DateStore的。
网友评论