mmkv专题

Android经典实战之存储方案对比:SharedPreferences vs MMKV vs DataStore

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在 Android 开发中,键值对存储(Key-Value Storage)是一种经常用到的轻量级数据存储方案。它主要用于保存一些简单的配置数据或状态信息,例如用户设置、缓存数据等。 常见的键值对存储方案 1、 SharedPreferences: 一个轻量级的持久

Android 常用开源库 MMKV 源码分析与理解

文章目录 前言一、MMKV简介1.mmap2.protobuf 二、MMKV 源码详解1.MMKV初始化2.MMKV对象获取3.文件摘要的映射4.loadFromFile 从文件加载数据5.数据写入6.内存重整7.数据读取8.数据删除9.文件回写10.Protobuf 实现1.序列化2.反序列化 12.文件锁1.加锁2.解锁 13.状态同步 总结参考文献 前言 谈到轻量级的数

android ——MMKV保存bean实体对象、保存数组bean

MMKV简介 MMKV是一款基于 mmap 内存映射的 key-value 存储库,专门为移动端开发设计。相比于传统的SharedPreferences和SQLite等存储方式,MMKV具有更快的读写速度和更小的存储空间占用。同时,MMKV还提供了多线程安全的支持和可配置的加密选项。因此,在移动端开发中,MMKV被广泛应用于数据持久化和缓存优化等方面。 添加依赖 implementat

SharedPreferences垃圾吗?对比MMKV和DataStore经验之谈

SharedPreferences 很垃圾吗? 嗯,他会阻塞主线程。他可能会崩溃,他可能无法提供大内容的存储,性能比较差,ANR等等。 但是是它的错吗?他的设计本意是提供极少的一些变量存储。结果臃肿的代码和封装写法,过度使用导致了很多问题。 如果不想看全篇,看粗体内容看看你是否有共鸣和不了解的地方,查漏补缺。 目前流行的存储有如下几个我这边自行给出个人使用感受: MMKV 通过内存映

Android MMKV 接入+ 替换原生 SP + 原生 SP 数据迁移

背景:项目中一直使用的是原生 SP,众所周知,使用原生 SP 存在卡顿性能问题。公司的性能监控平台抓到不少原生 SP 导致的 ANR 问题: java.io.FileDescriptor.sync (FileDescriptor.java)android.os.FileUtils.sync (FileUtils.java:256)android.app.SharedPreferencesI

MMKV 基于 mmap 的高性能通用 key-value 组件

学前介绍 MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今,在 iOS 微信上使用已有近 3 年,其性能和稳定性经过了时间的验证。 官方MMKV地址 为什么要替代SharedPreferences? 1,数据加密。 在 Android 环境里,数据加密是非常必须的,SP实际上是

SharedPreference进阶MMKV框架

SharedPreference 简介 顾名思义,Android 开发肯定会使用到SharedPreference。以下简称SP sp是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。 是以xml文件保到:/data/data/包名/shared_prefs目录下。类似键值对的方式来存储数据。 sp提供了常规的数据类型保存接口比如:int、long、boolean、St

ZUI易入门Android之 MMKV

MMKV是什么?      在Android开发过程中,我们经常会使用到一些存储。经常使用sharepreferences存储,当你的数据量在不需要使用数据库,但sharepreferences感觉又无法承载的时候,但性能卓越的存储框架,由腾讯旗下的微信开发—MMKV 今天我们主要从这几个方面来解释一下MMKV MMKV存储优势MMKV存储支持的数据类型MMKV引入依赖MMKV存储与

web前端开发培训心得,MMKV集成与原理

form表单细节 一、表单 1.表单 标签用于为用户输入创建 HTML 表单 2.表单能够包含 input 元素,比如文本字段、复选框、单选框、提交按钮等等。 3.表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。 4.表单用于向服务器传输数据。 二、表单form 的属性 (一)action属性 action

MMKV(3)

使用时遇到的问题 在项目的构建配置文件(如 Gradle 或 Maven)中添加相应的依赖项。 MMKV 是一个键值存储库,它存储的是原始的字节数组数据。需要存储和检索复杂的对象或数据结构,需要自行进行序列化和反序列化操作。可以使用任何合适的序列化库(如 JSON、Protocol Buffers 等)将对象转换为字节数组,并在读取时进行相反的操作。 读取数据时,需要将字节数组转换回相应的数

MMKV(3)

使用时遇到的问题 在项目的构建配置文件(如 Gradle 或 Maven)中添加相应的依赖项。 MMKV 是一个键值存储库,它存储的是原始的字节数组数据。需要存储和检索复杂的对象或数据结构,需要自行进行序列化和反序列化操作。可以使用任何合适的序列化库(如 JSON、Protocol Buffers 等)将对象转换为字节数组,并在读取时进行相反的操作。 读取数据时,需要将字节数组转换回相应的数

MMKV(1)

内存准备 通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。 数据组织 数据序列化方面选用 protobuf 协议,pb 在性能和空间占用上都有不错的表现。考虑到要提供的是通用 kv 组件,key 可以限定是 string 字符串类型,value 则多种多样(int/bool/do

MMKV(2)

API 初始化和实例获取: MMKV.initialize(Context context): 初始化MMKV库。通常在应用程序的入口点调用此方法。 MMKV.defaultMMKV(): 获取默认的MMKV实例。默认实例使用默认的存储路径和加密方式。 MMKV.mmkvWithID(String mmapID): 根据给定的ID获取MMKV实例。可以使用不同的ID创建多个MMKV实

再见SharedPreferences,你好MMKV!

前言 SharedPreferences是谷歌提供的轻量级存储方案,使用起来比较方便,可以直接进行数据存储,不必另起线程。 不过也带来很多问题,尤其是由SP引起的ANR问题,非常常见。 正因如此,后来也出现了一些SP的替代解决方案,比如MMKV。 本文主要包括以下内容 SharedPreferences存在的问题MMKV的基本使用与介绍MMKV的原理 SharedPreference