首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一起来看看 MMKV 。。。

    还记得某天,由于后台接口更新导致 App 本地数据库也要随之更新,因为之前项目着急,果断采用 SQLite,最直接导致只要后台接口更新,APP 就得更新。...接着,我们一起跟随官方文档来了解 MMKV 吧~ MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。...在会话列表、会话界面等有大量 cell 的地方,希望新加的计时器不会影响滑动性能;另外这些计数器还要永久存储下来——因为闪退随时可能发生。...再来了解下有关MMKV 原理: 内存准备 通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。...最后,我们一起来关注下有关性能问题: 贴心官方为我们将 MMKV 和 SharedPreferences、SQLite 进行对比,,重复读写操作 1k 次,如下图: 单进程性能 ?

    2.3K20

    ★ Android基础篇 Android 数据存储与性能

    、SQLite数据库、 网络存储 静态变量等 SharedPreferences 共享首选项 先说一下SharedPreferences 简称SP , SharedPreferences类提供了一个通用框架...(1) 不要存放大的 key 和 value 在 SharedPreferences 中,否则会一直存储在内存中得不到释放,内存使用过高会频发引发GC,导致界面丢帧甚至ANR (2) 不相关的配置选项最好不要放在一起...(3) 读取频繁的 key 和不频繁的 key 尽量不要放在一起(如果整个文件本身就较小则忽略,为了这点性能添加维护得不偿失)。 (4) 尽量不要存放 JSON 和 HTML,这种可以直接文件缓存。...现在的开发是针对于设备开发,而并非手机app的开发,如果app开发他的那种搞法非得出现问题不可。 因为Activity初始化的静态变量也会被置空,因此它的生命周期是不稳定的。...StudentsDao.Properties.Real_number.eq(card)).build().unique(); return studentsData; } /** * 删除学生数据

    1.3K20

    SharedPreferences采用什么方式存储数据_sharedpreferences使用方法

    sp数据文件最终是以.xml文件的格式,存储到App数据私有目录:/data/data/app包名>/shared_prefs/目录下,那么sp文件是如何从存储区加载到内存中的呢?...在Context的getSharedPreferences方法获取SharedPreferences对象时,我们发现如果参数mode的值是Context.MODE_MULTI_PROCESS或者App的...SharedPreferences数据在内存中的存储结构 SharedPreferences文件都是存放在“/data/data/app包名>/shared_prefs/”目录下。...SharedPreferences性能问题及最佳实践 ---- sp文件的io操作 sp文件存储在“/data/data/app包名>/shared_prefs/”目录下,存储格式是以.xml文件的形式存在...SharedPreferences的性能及最佳实践 sp的性能问题: sp文件存储在App私有目录,所以会随着App卸载而删除。

    1.7K20

    Android内存篇(三)----自动重启APP实现内存兜底策略

    微卡智享 实现App自动重启的思路 上面说了几点App自动重店的思路,在具体的代码实现中呢,也要考虑遇到的问题和使用的什么方式进行处理。 怎么实现凌晨2点到5点间执行重启?...A 采用SharedPreferences组件,当App成功后,记录的重启时间为明天的2点,这样每次检测重启时,当前时间小于记录的下次重启时间,也直接跳出。 如何实现App自动重启?...A 如果只单一Activity的话,那直接用上面的关闭进程就可以实现了,但往往App中不会只有一个Activity,所以我们要建一个ActivityStack的类,用于存放活动的Activity的列表,...} catch (e: Exception) { Log.e(TAG, e.message.toString()); } } //删除活动...import android.app.AlarmManager import android.app.Application import android.app.PendingIntent import

    1.2K40

    Jetpack组件之DataStore

    首语 数据持久化指将哪些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,数据依然不会丢失。 Android系统中主要提供了三种方式来实现数据持久化功能。...即文件存储、SharedPreferences存储及数据库存储。其中SharedPreferences是使用键值对的方式来存储轻量型数据,使用比较简单,且程序卸载后也会一并清除,不会残留数据。...在app的build.gradle中添加如下代码。...在app/src/main目录下新建一个文件夹proto,然后在文件夹proto下新建一个.proto类型的文件UserPrefs,编写proto文件及其字段,重新构建项目。...时,preferencesDataStore参数里包含produceMigrations参数,用来迁移SharedPreferences,需要执行一次读取或者写入操作,DataStore才会自动合并,迁移成功后会删除原有的

    1.3K10

    【Android】数据存储(一) SharedPreferences详解

    这些需要保存的数据可能一两个字符串,像这样的数据一般选择使用SharedPreferences来保存。 SharedPreferences:一个轻量级的存储类,特别适合用于保存软件配置参数。...对象; 使用SharedPreferences接口的edit获得SharedPreferences.Editor对象; 通过SharedPreferences.Editor接口的putXXX方法保存key-value...数据将一直存在,除非被覆盖、移除、清空或文件被删除。...(SharedPreferences保存的数据会随着应用的卸载而被删除) tip 3 同时执行这两句代码的时候,第一行代码所写的内容会被第二行代码取代。...editor.remove("age"); //移除操作 editor.clear(); //清空操作 editor.commit();//记得commit 附:源代码 import android.app.Activity

    2.8K70

    详解Android数据存储技术

    数据,如今是数据大时代,谁拥有数据,谁就能掌握未来,这一点很可怕的,现在你用的手机APP中存在着你的大量数据信息,大数据的积累可以掌握出你的作息时间,生活规律等。...增加数据 删除数据 用到的方法是delete(),第一个参数为表名,第二三位用于约束。...删除数据 更新数据 用到的方法是update()方法,参数分别为表名,ContentValues对象,约束,约束,好了,接下来示例一下。...查询数据 cursor 升级数据库 用到onUpdate()方法,分别删除表,再次在此方法里创建即可。...oldVersion, int newVersion) { System.out.println("更新版本为:"+newVersion); } } 结语 Android存储技术知识点就介绍到这了,一起努力吧

    1.5K20

    【Android从零单排系列四十】《Android数据存储方式-SharedPreferences、》

    方法获取SharedPreferences对象 SharedPreferences sharedPreferences = getSharedPreferences("文件名", MODE_PRIVATE...存储数据: // 获取SharedPreferences.Editor对象 SharedPreferences.Editor editor = sharedPreferences.edit(); //...存储数据时,使用apply()方法提交保存,确保异步保存数据,并且不会阻塞主线程。也可以使用commit()方法提交,但它会阻塞主线程。 读取数据时,需要根据实际需要选择适当的默认值。...apply(): 提交保存修改的数据,异步操作,不会阻塞主线程。 commit(): 提交保存修改的数据,同步操作,会阻塞主线程。...四 SharedPreferences简单案例 import android.content.SharedPreferences; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity

    45310

    SharedPreferences三问—bilibili真题

    作为一个轻量级的存储方式,SharedPreferences一直用来保存简单的配置信息,今天我们就来一起深入了解下它: SharedPreferences是如何保证线程安全的,其内部的实现用到了哪些锁...SharedPreferences 操作有文件备份吗?是怎么完成备份的?...SharedPreferences是如何保证线程安全的,其内部的实现用到了哪些锁 SharedPreferences的本质是用键值对的方式保存数据到xml文件,然后对文件进行读写操作。...加文件锁,由于SharedPreferences的本质是读写文件,所以我们对文件加锁,就能保证进程安全了。 SharedPreferences 操作有文件备份吗?是怎么完成备份的?...mFile.renameTo(mBackupFile); } 再写入所有数据,只有写入成功,并且通过 sync 完成落盘后,才会将 Backup(.bak) 文件删除。

    1.3K20

    【面试黑洞】Android 的键值对存储有没有最优解?

    最早是因为微信的一个需求(来源:MMKV 组件现在开源了): 微信作为一个全民的聊天 App,对话内容中的特殊字符所导致的程序崩溃是一类很常见、也很需要快速解决的问题;而哪些字符会导致程序崩溃,是无法预知的...而且这个内存映射还有一点很方便的是,虽然这块映射的内存不是实时向对应的文件写入新数据,但是它在程序崩溃的时候,并不会随着进程一起被销毁掉,而是会继续有条不紊地把它里面还没同步完的内容同步到它所映射的文件里面去...所以如果你们公司的 App 是需要在多个进程里访问键值对数据,那么 MMKV 是你唯一的选择。 MMKV 劣势:丢数据 除了速度快和支持多进程这两个优势之外,MMKV 也有一个弱点:它会丢数据。...虽然 MMKV 几乎完胜,但是毕竟 SharedPreferences 不会丢数据呀,所以它俩是各有优劣的。...这种卡顿,不是 SharedPreferences 独有的,MMKV 也是存在的,因为它初始化的过程同样也是从磁盘里读取文件,而且是一股脑把整个文件读完,所以耗时并不会比 SharedPreferences

    1.4K20

    《移动互联网技术》 第七章 数据存取: 掌握File、SharePreferences、SQLite和ContentProvider四种数据存取方式

    BufferedReader是一行一行读取数据,每读取一行就把它连接在一起,然后存储在content对象中。...在SharedPreferences中存储数据一共有四个步骤:首先,获取一个SharedPreferences对象,然后再获取一个Editor对象;通过Editor就可以向SharedPreferences...app的安装的文件(调试app时,会上传apk到该文件夹)。...私有目录属于应用私有,当用户卸载应用时,该目录及其内容将被删除。 通常建议应用程序的数据(不适合其他应用使用的文件,比如:图像、纹理、音效等等)存放在外部存储的私有目录中(即该App的包名下面)。...这样当用户卸载应用之后,相关的数据会一起删除;如果直接在/storage/文件夹下面创建应用子文件夹,那么当应用被删除的时候,这个子文件夹就不会被删除。

    17710
    领券