大概的总结是:“如果你有多进程支持的需求,MMKV 是你唯一的选择;如果你有高频写入的需求,你也应该优先考虑 MMKV。但如果你使用 MMKV,一定要知道它是可能丢失数据的,不过概率很低就是了,所以你要在权衡之后做好决定:是自行实现数据的备份和恢复方案,还是直接接受丢数据的事实,在每次丢失数据之后帮用户把相应的数据进行初始化。当然了,一个最鸡贼的做法是:反正数据监测不会监测到 MMKV 的数据丢失,又不影响绩效,那就不管它呗!不过我个人是不太赞同这种策略的,有点不负责哈。
另外,如果你没有多进程的需求,也没有高频写入的需求,DataStore 作为性能最完美的方案,应该优先被考虑。因为它在任何时候都不会卡顿,而 MMKV 在写大字符串和初次加载文件的时候是可能会卡顿的,而且初次加载文件的卡顿不是概率性的,只要文件大到了引起卡顿的程度,就是 100% 的卡顿。不过如果你的团队没有在用协程,甚至没有在用 Kotlin,那 DataStore 也暂时不适合你们,因为它是完全依赖 Kotlin 协程来实现和使用的。
哦对了,其实我今天说的 DataStore 只是面向简单键值对存储的 DataStore 方案,它的全称叫 Preferences DataStore,而 DataStore 还有用于保存结构化数据的方案,叫做 Proto DataStore,它内部用的是 Protocol Buffer 作为数据结构的支持。但是这个有点跑题,我就不展开了。
至于 SharedPreferences 嘛,在这个时代,它真的可以被放弃了。除非——像我刚说的——如果你们还没在用协程,那 SharedPreferences 可能还能苟延残喘一下。”
原文出处:https://rengwuxian.com/mian-shi-hei-dong-android-de-jian-zhi-dui-cun-chu-you-mei-you-zui-you-jie/
网友评论