关于Android键值对存储的方案选择
admin
2024-01-20 08:11:02
0

关于Android键值对存储的方案选择

我尽量不打错别字,用词准确,不造成阅读障碍。

关于Android键值对方案的选择一般只有三种:MMKV、SharedPreferences、DataStore,其它的我也不知道了。

一、SharedPreferences

优点

  1. 使用简单:Android SDK中自带的键值对存储方式,其不需要添加任何多余的依赖,直接使用即可。
  2. 不丢失数据:因为其在写入数据的时候会做数据备份,所以如果因为停电等不可抗因素导致的数据损坏并不会导致数据丢失。

缺点

  1. 不支持多进程。
  2. 初始化时会卡顿:当数据量很大的时候初始化会卡顿,而且百分百卡顿。另外,这个异常会上传到后台的统计数据里,会影响绩效。
  3. 可能导致卡顿甚至ANR:虽然其支持异步方式保存更改,但是Activity会在启动和销毁的时候等待这些异步任务的完成,这是为了保证数据一致性而做的妥协,这种情况下,异步就变为同步了,属于是低概率事件。

二、DataStore

2020年推出,2021年8月才发布正式版,为了替换SharedPreferences而出。

优点

  1. 不丢失数据:因为其在写入数据的时候会做数据备份,所以如果因为停电等不可抗因素导致的数据损坏并不会导致数据丢失,这点和SharedPreferences一样。
  2. 协程操作:在初始化及其它使用场景下完全不会有卡顿。
  3. 方便的回调写法:出来的比较晚,语法比较新,再加上Kotlind的语法支持,所以写起来比较舒服。
  4. 大数据量读写速度很快,是所有方案中最快的。

缺点

  1. 不支持多进程:新版本已经有支持的代码,现在也许支持了。
  2. 小数据量读写速度不快,甚至没有SharedPreferences快,是所有方案中最慢的。
  3. 需要Kotlin支持:因为是用协程操作的。

三、MMKV

​ Tencent在2018年推出,起初是因为微信部分用户在解析特殊字符的时候会发生崩溃,所以微信想要在显示消息之前将文本保存至磁盘,为了在崩溃之前准确拿到数据,所以要同步保存(异步的话可能数据还没保存完,程序就完蛋了或者数据损坏),但是同步保存容易导致主线程卡顿,尤其是群里有大量消息来临的时候,总结来说就是有高频同步写磁盘的需求。最后微信采用了内存映射的方案,通过mmap内存映射文件(这种方式下,写入内存的数据也会自动写入文件),提供一段可供随时写入的内存块,由操作系统将内存写入文件,速度快且不必担心Crash导致的数据丢失。

优点

  1. 支持多进程。
  2. 不影响绩效:数据丢失异常不会被后台检查到。
  3. 少量及中量数据写入速度很快,是所有方案中最快的。

缺点

  1. 大数据速度慢:因为是自行管理一块独立的内存,所以在内存尺度的伸缩上就是比较受限,导致写入大数据时速度很慢。
  2. 丢数据:因为不备份,如果备份了,那就要写入磁盘,就会导致没有了高频写入的优势,与需求相违背。
  3. 有概率卡顿:初始化的时候会把所有文件都读出来,所以有概率卡顿。

总结

一般情况下,对数据丢失不敏感,数据量也不大的情况下,建议使用MMKV就好,如果对多进程有要求,那只有MMKV或看看DataStore的最新版是否支持。大数据量的话建议DataStore,速度很快,也很稳,或者对数据保存时间没有特别要求的情况下,使用DataStore。基本无要求的情况下,可以使用SharedPreferences,但是谁也不能保证后面会不会数据量增大,再加上卡顿可能的发生,其实不如用DataStore。

相关内容

热门资讯

原创 为... 泰国政坛近日掀起轩然大波。9月5日国会下议院即将举行总理选举的关键时刻,为泰党精神领袖他信·西那瓦却...
“下一站,香港!”海南自贸港旅... 9月7日,海南自贸港旅文(香港)系列推介活动将在香港k11艺术购物中心举行,近200件非遗展品、80...
张家界五天四晚旅游不踩坑攻略:... 梦幻张家界:我的五日仙境之旅 2025年春天,我终于来到了梦寐以求的张家界。这片被列入世界自然遗产...
上半年俄罗斯游客入境北京人数增... 本周,我国外交部宣布,2025年9月15日至2026年9月14日,为进一步便利中外人员往来,中方对俄...
别再直接喝酱酒了,“3步醒酒法... 提及醒酒,多数人第一反应必是红酒——红酒经醒酒,能唤醒沉睡的风味,绽放最佳口感与香气。 可你是否知晓...
紫苏豆角炒肉片 材料:猪肉150克、豆角150克、茄子150克、紫苏叶10克、蒜头(去衣拍碎)15克、姜片10克,盐...
原创 给... 给孩子的晚餐这样做,3道下饭菜,好做又好吃! 有多少妈妈和我一样每天站在厨房都犯愁,该给孩子做顿啥样...
台州黄岩蜜橘:甜到爆汁,秋天的... 黄岩蜜橘作为浙江台州的特色水果,以 “甜到爆汁” 的绝佳口感成为秋天里令人瞩目的限定美味。它不仅承载...
石家庄一面馆推“茅台配板面”套... 酱香味的面你吃过吗?点一碗8元的石家庄板面,加38元可以喝一杯10毫升的53度飞天茅台酒。近日,河北...
八年超2800个项目参与申报的... 9月11日至13日,由广东省文化和旅游厅、中共广东省委金融委员会办公室、中国人民银行广东省分行主办的...
原创 阿... 泰国政坛风云变幻:阿努廷当选总理与他信\"战略离境\"引发关注 9月5日,泰国政坛迎来重大转折,前公...
浙江援藏侧记:“牦牛背上的电站... 中新网 绍兴9月5日电(张益聪 许倩汝)9月,西藏那曲的天然草场,风吹草低见牛羊。在这片电网难以触及...
原创 最... 最有营养的鱼,不是带鱼和鲫鱼,而是这3种鱼,建议常做给孩子吃,益智补脑,呵护脾胃! 《论语》里说的“...
原创 入... 导读:入秋后最该吃的3种鱼,比草鱼鲫鱼更滋补!肉多刺少,营养满分! 秋意渐浓,人体需要更多优质蛋白和...
西北青甘大环线秋季玩才绝!9月... 西北青甘大环线秋季旅游攻略:一次难忘的7天6夜之旅 第一部分:兰州初探与沙漠奇观 2025年的9月...
张家界家庭游五天四晚实用指南:... 梦幻张家界:我的五日仙境之旅 2025年春天,我终于踏上了向往已久的张家界之旅。这片被联合国教科文...