腾讯开源的存储框架MMKV,目前项目中已使用MMKV替换SharePreference
关于MMKV的一些知识点,摘抄记录一下:
MMKV——基于 mmap 的高性能通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。 从 2015 年中至今,在 iOS 微信上使用已有近 3 年,其性能和稳定性经过了时间的验证。 近期已移植到 Android 平台。在腾讯内部开源半年之后,得到公司内部团队的广泛应用和一致好评。 摘抄自,具体特性和性能相关使用,可自行查看: zhuanlan.zhihu.com/p/138141931
下面看一下,mmkv可保存的类型,如果是对象就必须实现Parcelable接口
那么,我的问题来了,怎么保存HashMash<Long, Entity>集合呢?
说一下我的实现方式,我新建了一个对象EntityMap,对象里有个参数,参数类型是HashMash<Long, Entity>,再将EntityMap实现Parcelable接口,完成序列化操作,再通过MMKV保存下来。
但是,期间却报这个错,导致App崩溃,虽然我try-catch解决了崩溃问题,可是却没有解决最根本问题
根本问题是,实际上这个序列化并没有成功,也就是说,我的数据压根就没有成功的通过mmkv保存下来,每次取的数据知识临时对象缓存下来的。
突然所有的bug都集中爆发,App各种崩,我的心态也崩了,整个人都处在紧张状态,完全是瞎猫乱撞,还好受大神指点迷津,最终将对象直接通过Json转成字符串,再通过mmkv来保存下来,嗯,完美搞定,记录一下,免得之后又犯同样的错误!!!
以下是kotlin版本的扩展方法: