当前位置: 首页 > news >正文

360海南地方网站上海松一网站建设

360海南地方网站,上海松一网站建设,旅游网络推广怎么做,江苏通力建设官方网站一、MMKV是什么? MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。也是腾讯微信团队使用的技术。 支持的数据类型 支持以下 Java 语言基础类型: boolean、int…

一、MMKV是什么?

MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。也是腾讯微信团队使用的技术。

支持的数据类型

  • 支持以下 Java 语言基础类型:
    • boolean、int、long、float、double、byte[]
  • 支持以下 Java 类和容器:
    • String、Set<String>
    • 任何实现了Parcelable的类型

二、MMKV的优点

1、 高性能:MMKV使用了一些技术手段,如mmap文件映射和跨进程通信的共享内存,以实现更高效的数据存取操作。MMKV的性能比SharedPreferences快数十倍,尤其在读写大量数据时效果更加明显。

profile_android_mini

2、小存储体积:这是因为MMKV使用了一种更高效的序列化算法,并且将数据存储在二进制文件中,避免了XML解析和序列化的开销。相同数据量情况下,MMKV的存储体积可以减少50%以上。

3、 跨进程共享:MMKV支持多进程间的数据共享,这对于需要在多个进程之间传递数据的应用程序非常有用。MMKV通过共享内存和文件锁定机制来确保跨进程读写数据的一致性和安全性。

4、API简单易用:MMKV提供了简洁、易用的API,使数据存取变得更加方便。

三、使用方法

官方文档:MMKV——基于 mmap 的高性能通用 key-value 组件

1、添加如下依赖:

implementation 'com.tencent:mmkv:1.3.1'

2、初始化MMKV

MMKV 的使用非常简单,所有变更立马生效,无需调用 syncapply。 在 App 启动时初始化 MMKV,设定 MMKV 的根目录(files/mmkv/)

例如:在您的应用程序的入口点(通常是Application类)中添加以下代码:

        String rootDir = MMKV.initialize(this);Log.e(TAG, "MMKV: "+rootDir);

这就是MMKV的存储路径

image-20231108210047549

3、存储和读取数据

3 .1 获取全局MMKV实例

MMKV提供了一个全局的实例,也就是说只需要在Application中加载一次就可以全局使用他了。

        //获取全局MMKVMMKV mmkv = MMKV.defaultMMKV();

3.2存储数据

int value = 1;
//存储数据
mmkv.encode("Id",value);

在这里可以看见MMKV是使用键值对的方法进行存储

image-20231108210428584

3.3 读取数据

        //读取数据int idValue =  mmkv.decodeInt("Id");Log.e(TAG, "idValue: "+idValue);

上述代码将从名为"Id"的键中读取存储的值并将其分配给value。

注意事项:MMKV可以存储各种类型的数据,包括String、Int、Float、Double、 ByteArray等。您只需要根据需要使用相应的encode和decode方法

image-20231108210713171

image-20231108210850700

3.4 删除数据

//删除数据
mmkv.remove("Id");//读取数据
int idValue =  mmkv.decodeInt("Id");
Log.e(TAG, "idValue: "+idValue);

image-20231108211050307

四、自定义MMKV

4.1 自定义mkkv的表名

如果不同业务需要区别存储,也可以单独创建自己的实例

String rootDir = MMKV.initialize(this);
Log.e(TAG, "MMKV: "+rootDir);MMKV kv = MMKV.mmkvWithID("MyID");
Log.e(TAG, "MMKV: "+kv);

注意一定要先initialize MMKV才能建立新的表

image-20231108212050176

image-20231108212041857

如果业务需要多进程访问,那么在初始化的时候加上标志位 MMKV.MULTI_PROCESS_MODE

MMKV kv = MMKV.mmkvWithID("InterProcessKV", MMKV.MULTI_PROCESS_MODE);

4.2 自定义MMKV路径

初始化时指定自定义的MMKV存储路径

        String rootDir = MMKV.initialize(this, "/sdcard/mymmkv");Log.e(TAG, "MMKV: "+rootDir);

image-20231108212341232

五、SharedPreferences 迁移

  • MMKV 提供了 importFromSharedPreferences() 函数,可以比较方便地迁移数据过来。
  • MMKV 还额外实现了一遍 SharedPreferencesSharedPreferences.Editor 这两个 interface,在迁移的时候只需两三行代码即可,其他 CRUD 操作代码都不用改。
        //获取SharedPreferences实例:SharedPreferences sharedPreferencesOld = getSharedPreferences("your_sharedPreferences_name", Context.MODE_PRIVATE);//调用importFromSharedPreferences()进行数据迁移:MMKV mmkv = MMKV.mmkvWithID("NewsharedPreferences");mmkv.importFromSharedPreferences(sharedPreferencesOld);//可选:删除旧的SharedPreferencessharedPreferencesOld.edit().clear().apply();

六、MKKV的缺点

1、导致ANT

因为是同步存储数据,因此小的数据读写非常快,但是大的数据读写就不如SP了,同步存储大的数据会使得主线程卡顿导致ANT。

2、无备份

由于直接在磁盘存储,所以如果系统出现问题会导致数据直接丢失,在这方面SP是有备份的。

3、不支持复杂的数据类型

但是也没必要存储复杂数据类型,SP也不支持复杂数据类型,后面用Room存储复杂的数据类型就行了。

http://www.yayakq.cn/news/552339/

相关文章:

  • 专门做酒店设计的网站买下云服务器怎么做网站
  • 山丹做网站的公司个人备案经营网站备案
  • discuz论坛门户网站模板像淘客基地这样的网站如何做
  • 网站建设实力宣传海报c2c的平台有哪些
  • 学院网站设计说明书网站被百度k是什么意思
  • 做单页面网站湖北智能网站建设推荐
  • wordpress网站被挂马网站设计配色案列
  • 企业网站开发设计展示网站如何做
  • 影院网站建设主管网站建设的盈利性和非盈利性
  • 网站规划小结微信公众号小程序搭建
  • 闵行营销型网站制作企业网站完整版
  • 做一人网站要多少钱wordpress能做商城
  • 网站免费推广方式北京网站开发建设 58同城
  • 凡科外贸网站建设网件路由器怎么样
  • wordpress双首页福州seo技巧培训
  • 广告公司微网站建设西宁市营销网站建设公司
  • 个人网站 教程有哪些ui的设计网站
  • 建设网站有哪些步骤南京制作网页设计
  • 西安地产网站建设横沥网站建设公司
  • 图片设计制作网站做临床研究在哪个网站注册
  • 网站开发与维护算什么职位网站定制费用
  • 重慶网站建设室内装修设计软件3d
  • 如何做滴滴网站平台google 推广优化
  • 网站建设技术风险com后缀的网站
  • 天津网站建设专家dw做的网站怎么做后台
  • 沧州网站建设报价英文网站title
  • 怎么在自己的网站上做漂浮链接关于做花茶网站的策划书
  • 天津智能网站建设价位深圳网站建设 外包合作
  • 网站流量 名词做网站销售会遇到哪些问题
  • 建立网站wordpress诸城哪有做公司网站的