首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记住我,SharedPreferences在安卓系统中运行速度很慢。如何让它更快地工作?

SharedPreferences是Android系统中用于存储轻量级键值对数据的一种机制。虽然SharedPreferences在存储少量数据时具有简单、方便的优势,但在处理大量数据时可能会出现性能问题。以下是提高SharedPreferences运行速度的几种方法:

  1. 使用apply()代替commit():SharedPreferences提供了两种提交数据的方法,即commit()和apply()。commit()会同步写入磁盘并返回写入结果,而apply()则是异步写入磁盘,不返回写入结果。由于apply()不会阻塞主线程,因此在大量数据写入时,使用apply()可以提高性能。
  2. 批量操作数据:如果需要一次性存储多个键值对数据,可以使用Editor的批量操作方法,如putStringSet()、putString()等,而不是多次调用putXXX()方法逐个存储。
  3. 使用内存缓存:可以将SharedPreferences中的数据缓存在内存中,以减少读取磁盘的次数。可以使用HashMap等数据结构来实现内存缓存,并在读取数据时先从内存中查找,如果不存在再从SharedPreferences中读取。
  4. 使用更高效的数据存储方式:对于大量数据或复杂数据结构,可以考虑使用其他更高效的数据存储方式,如SQLite数据库或文件存储。SQLite数据库可以提供更好的查询和索引功能,而文件存储可以更灵活地处理复杂数据结构。
  5. 避免频繁读写操作:频繁地读写SharedPreferences会导致性能下降,因此可以尽量避免在循环或频繁调用的地方进行读写操作。可以将数据缓存在内存中,只在必要时进行读写操作。
  6. 使用合适的数据结构和数据类型:根据实际需求选择合适的数据结构和数据类型,避免数据冗余和类型转换带来的性能损耗。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库Redis:提供高性能、高可靠性的内存数据库服务,可用于缓存数据,加速读写操作。详情请参考:https://cloud.tencent.com/product/redis
  • 腾讯云云数据库TencentDB:提供稳定可靠的关系型数据库服务,适用于存储大量结构化数据。详情请参考:https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储COS:提供安全可靠的云端存储服务,适用于存储和管理大规模非结构化数据。详情请参考:https://cloud.tencent.com/product/cos
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个 2 年 Android 开发者的 18 条忠告

仍记得2014年决定做开发的那天,这是一生做出的最好决定之一。到现在已经有2年半了, 最初的时候,并没有人告诉如何做才是正确的。犯了很多错误,浪费了很多时间。...高性能的代码是指运行速度快,内存和存储消耗更少的代码。 一个未经优化的的app也许普通情况下运行良好,但是当放在各种压力情景,它就原形毕露了。检查你app的内存使用情况看看有没有内存泄漏存在。...的碎片化是魔鬼 ? 碎片化可能是最大的问题了。而谷歌似乎并不愿意修复,你必须适应。 设备种类繁多,不同屏幕尺寸,不同硬件配置以及各个厂商的自定义系统。...为黑客制造麻烦 的开源特性其易受攻击。每个app都可以轻易的被反编译,逆向分析。 你不希望你的app发生这种事对吧? 你需要知道如何安全的存储app的API keys。...我们都忙于自己的工作,很难找到时间为别人做什么事情。但是尽量每周找点时间做点贡献社区丰富。 已经分享了自己短暂的生涯中所学到的一些东西。将继续下去,学更多,分享更多。

99780

一个 2 年 Android 开发者的 18 条忠告

转载自码农网 仍记得2014年决定做开发的那天,这是一生做出的最好决定之一。到现在已经有2年半了。 最初的时候,并没有人告诉如何做才是正确的。犯了很多错误,浪费了很多时间。...高性能的代码是指运行速度快,内存和存储消耗更少的代码。 一个未经优化的的app也许普通情况下运行良好,但是当放在各种压力情景,它就原形毕露了。检查你app的内存使用情况看看有没有内存泄漏存在。...的碎片化是魔鬼 ? 碎片化可能是最大的问题了。而谷歌似乎并不愿意修复,你必须适应。 设备种类繁多,不同屏幕尺寸,不同硬件配置以及各个厂商的自定义系统。...15.为黑客制造麻烦 的开源特性其易受攻击。每个app都可以轻易的被反编译,逆向分析。 你不希望你的app发生这种事对吧? 你需要知道如何安全的存储app的API keys。...我们都忙于自己的工作,很难找到时间为别人做什么事情。但是尽量每周找点时间做点贡献社区丰富。 已经分享了自己短暂的生涯中所学到的一些东西。将继续下去,学更多,分享更多。

50430
  • 【Dev Club 分享】单元测试:What, Why and How

    这次分享主要介绍什么是单元测试、为什么要做单元测试、以及如何平台上做单元测试。 下面是本期分享内容整理 ---- 大家晚上好,是小创,目前工作于 蘑菇街 支付金融部门。...今天很高兴跟大家分享一下,单元测试方面的一些经验。 这次分享主要介绍什么是单元测试、为什么要做单元测试、以及如何平台上做单元测试。...然而我觉得,除了这方面的作用,单元测试还能在非常大的程度上改善代码的设计,同时还能节约时间,工作起来更有信心、开心,以及其他的一些好处。...所以,希望大家能去掉”没时间写单元测试”这个印象,如果工作上安排太紧。没有时间学习如何做单元测试的话,可以自己私底下学,然后慢慢应用到项目中。 2. 如何平台做单元测试?...而在测试环境,我们写一个TestingModule,继承正常的Module,然后override掉生产DataModel的方法,生产mock的DataModel。

    1.4K60

    拖拽,自由组合,你的开发更加简单,用户方便

    今天给大家推荐一个自由拖拽,自由组合的控件,这个控件是自定义写的。通过,我们可以自由拖拽,自由组合实现一个界面,满足一个用户自由组合界面的需求。...这里不是通过自由拖拽控件,来快速开发一个界面,而且人性化的用户去自由组合一个界面。...如果每个开发人员都从这么原始的步奏开始做起,那对于生态是相当不利的。所以说 ViewDragHelper 等的出现反映了开发框架已经开始向成熟的方向迈进。...其实方法也一样很简单,那就是: 记住每个子控件拖拽后的位置,并保存, onLayout 方法,读取记录的位置 在这里,给每个视图和控件都增加了一个 tag ,拖拽的时候根据 tag 知道拖拽的是哪个控件和视图...,然后记录位置,写入 SharedPreferences 文件 onLayout 方法读取文件,根据记录的位置布局,这样,再次打开应用时,就会根据自己拖拽和组合的方式排列。

    1.1K60

    解决性能问题的复杂性

    如果有人来找我说,“嘿,的数据库很慢”,那么可能有一百万种原因导致变慢,或者只是人感觉很慢。也可能有很多不同的解决方案可以加快系统速度。...例如,如果 IO 系统很慢可以尝试通过安装固态硬盘来提高 IO 系统速度,或者尝试将大型多块读取与单块读取分离,这样的单块读取就不会因为大型多块读取的队列中等待而延迟。...我们必须在凌晨 2 点之前将最终结果交付给管道的下一个系统,但该系统不再在那个一小时的时间范围内完成作业。而且看起来 IO 系统是主要问题:运行缓慢;没有按照我们习惯看到的方式运行。”...我们如何定义这个问题? “批处理过程没有一小时内完成”是对问题的相当好的概括性描述。 “我们需要加快 IO 系统速度,因为 IO 系统很慢”是对问题的非常狭隘的定义。...他们可能只是告诉你很慢,但几乎总会伴随着一些其他信息。也许是“很慢认为存在 IO 问题”或“很慢,看起来我们凌晨两点到三点之间将 CPU 占用率拉满了”。总会有一些信息。

    8910

    React Native vs. Cordova、PhoneGap、Ionic,等等

    通常,原生的框架的程序能够获取更多的硬件功能,以及使用硬件更加自由。由于不同语言之间进行模拟和翻译的开销较低,通常运行效率更高。但现实是残酷的,的代码通常更难编写和理解。...编码语言也容易理解和简洁(需要的代码少)。的词汇接近与我们人类的自然语言。它不需要我们十分了解硬件的构成以及它在幕后的工作方式。...此阵营的应用速度都很快,并且可以使用丰富的硬件功能。用户界面是针对目标平台(或 IOS)的定制的,因此使用起来是流畅且愉悦的。但是,所有这些好处都被限制一个平台上了。...这些框架可以 Web 开发人员使用他们已经具备的 HTML、CSS 和 JavaScript 技能来开发应用。这些应用可以同时运行和 IOS 平台上(还可以有更多平台)。...它们是如何做到的呢?它们每个应用中都内嵌了 Web 浏览器,并美名其曰 WebView!你 UI 中看到的所有,包括按钮、菜单和动画,都是浏览器的网页运行的。

    3.2K40

    【重磅】谷歌人工智能帝国内幕大起底

    谷歌如何打造人工智能帝国? 这个搜索巨头正在将它的人工智能服务开源,每个人都可以使用。2007 年 11月,谷歌通过发布手机开源操作系统,为自己移动市场的支配地位奠定了基础。...极端复杂的情形,机器学习是一种计算机变得聪明的有力武器,而这已属于更广泛的、也更难以定义的人工智能领域了。TensorFlow 极其复杂,因为它在吸取和输出数据时具有极高的精度和速度。...人们既可以在台式电脑或笔记本上编辑,也可以移动端应用它(首先会发布版,之后还会推出 iOS 版)。TensorFlow 还会提供学习指南和文档,以供人们了解如何调整和玩转这个平台。...这个小麦克风图标也出现在 iPhone 和的谷歌搜索 App 许多智能手机的搜索条也能发现。...而这是因为,私人邮件里,“我爱你”是一个非常常见的词组,所以机器会认为很重要。 所有这些都是为了你的工作容易些——那也正是该公司大部分产品的目标。

    919110

    第六夜 凡高的自画像

    在上一讲已经制作了一个简单的Android应用。...描述 将创建一个新的Activity。这个界面允许用户输入本人的姓名和博客地址。这些输入数据将在会保存起来。主界面再次调出数据,并显示。相关知识点包括: 启动Activity。...会根据你选择的类型,做一些默认设置。比如选择Android Activity后,AndroidManifest.xml自动注册该Activity,从而省去用户的麻烦。 ...另一方面,把数据读取部分放入了onResume()方法。根据的规定,MainActivity第一次运行,以及每次从暂停复苏时,都会调用该方法。...onResume() 最后,用setText()方法,把新的数据加载到视图的TextView运行 "Edit Profile"输入用户信息,提交后返回主页面,效果如下: ?

    1.2K70

    移动体验设计6大禁

    尽可能的使用原生控件,以便用户知道如何使用它们。用户录入敏感数据或支付细节时才会更加信任你的应用。下面的例子是和ios平台中相同内容的显示差异: ?...的UI元素(上)和ios的UI元素(下) 相比于Material design,ios应用通常外观扁平,不使用厚度和阴影。...iOS版也有一个纯文本样式的按钮,但它与的全大写字母不同,并且字体纤细。 ?...你也应该注意到每个平台自身独特的风格:系统图标通常使用较粗的笔触,而iOS乐于使用笔画较细的线形图标。以下是几个图标的对比图: ?...死胡同空页面,图片来源:Spotify 完全没有帮助用户理解情况,也没有回答用户:“到底该做什么?”这个问题。

    2.2K130

    第三届“中科实数杯”团体赛wp

    团体赛题目整体分为两部分:磁盘镜像分析 & 模拟器分析,难度上第一部分比较简单,第二部分涉及到很多相关知识,相对比较困难 Part1 磁盘镜像分析(300分) 基于硬盘镜像文件(windows7disk.E01...(10分) 目标应用在模拟器里,所以首先要找到模拟器对应的虚拟机,火眼取证分析里可以看到 取证大师里也能找到,只不过他没有单独的手机模拟器识别的分类,找起来会不那么直观 把这个模拟器的vmdk...执行一些命令 首先打开模拟器,然后bin目录打开cmd,执行adb.exe shell,接下来我们只需要找到储存锁屏密钥的文件并将其删去即可 我们通过夜神模拟器可以得知这个虚拟机的版本是Android...(30分) 这道题我们可以利用逆向思维,这个应用有记住密码的功能,那么我们先去分析应用是如何记住密码的 在网上查找一些Android实现记住密码的方法,可以找到一些文章 https://blog.csdn.net...(10分) 硬编码是指将可变变量用一个固定值来代替的方法,与从外部获取数据或在运行时生成数据不同,硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,通俗地讲,就是把一个本来应该(可以)写到配置信息的信息直接在程序代码写死了

    1.9K51

    3 分钟为英语学习神器 Anki 部署一个专属同步服务器

    即便如此,大家熟悉单词的过程可能还会有一个误区,比如上面这个单词,你在学习的过程可能会忍不住去想这个单词中文里究竟是什么意思,甚至可能会在心里默念的中文意思,即使你看了图片和英文解释,你心里可能还会忍不住去想...你能 get 到这个单词所表达的那种感觉就行了,不要再去思考如何用中文来描述,那样反而吃力不讨好。...---- 下面言归正传,相信有很多小伙伴和我一样使用 Anki 来学习英文单词或者其他的知识,但是 Anki 的同步服务器在国外,还是一个个人项目,带宽很小,同步速度很慢,如果我们想在多个客户端之间同步学习进度和新增的知识点...端也是直接配置即可,的 AnkiDroid 版本是 2.15.6。你可以通过「设置 -> 高级设置 -> 自定义同步服务器」找到配置页面。...至少对于版本 Ankimobile 2.0.90(20090.2) 来说,似乎是可行的,这是一位 iOS 系统用户 Anki 论坛报告的[6]。

    1.2K30

    android cookie持久化

    之前先科普一下基础知识: 什么是Cookies? Cookies是一些小文件,它们被创建在客户端的系统里,或者被创建在客户端浏览器的内存(如果是临时性的话)。用它可以实现状态管理的功能。...我们可以存储一些少量信息到可以短的系统上,以便在需要的时候使用。最有趣的事情是,它是对用户透明的。在你的web应用程序,你可以到处使用它,极其得简单。Cookies是以文本形式存储的。...最常用的例子是,使用一个cookie来存储用户信息,用户的喜好,“记住密码”操作等。Cookies有许多优点,当然也有许多缺点。将在接下来讲述。 Cookies是如何创建的?...BasicClientCookie对象存储的cookie当容器对象被垃圾回收机制回收时会丢失。如果需要,用户可以提供复杂的实现。...下载着重介绍如何利用httpclient来实现对cookie的持久化操作: 一、请求网络获取cookie 先看一下下面的代码: DefaultHttpClient httpclient =

    1.5K90

    Android持久化保存cookie的方法

    我们可以存储一些少量信息到可以短的系统上,以便在需要的时候使用。最有趣的事情是,它是对用户透明的。在你的web应用程序,你可以到处使用它,极其得简单。Cookies是以文本形式存储的。...最常用的例子是,使用一个cookie来存储用户信息,用户的喜好,“记住密码”操作等。Cookies有许多优点,当然也有许多缺点。将在接下来讲述。 Cookies是如何创建的?...(4)我们需要配置浏览器,cookies将不能工作浏览器配置的高安全级别环境下。...BasicClientCookie对象存储的cookie当容器对象被垃圾回收机制回收时会丢失。如果需要,用户可以提供复杂的实现。...下载着重介绍如何利用httpclient来实现对cookie的持久化操作: 一、请求网络获取cookie 先看一下下面的代码: DefaultHttpClient httpclient = new

    2.2K20

    Java现实生活中都用在哪些项目?

    现实生活的Java应用 现实生活,很多地方都用到了Java,从商业上的电子商务网站到App,从科学应用到经济应用,如电子交易系统,从游戏如《的世界》到桌面应用,如Eclipse、Netbeans...让我们详细地看一下它们。 ? 1)应用 如果你想弄清楚Java用在什么地方,你离这个目标不是太远。...数年的支持已经有了很大提高,并且很多Java程序员已经成为了app开发者。...顺便提一下,像我们之前how Android app works这篇文章说到的那样,使用不同的java虚拟机、不同的包,但是代码仍是用Java写的。...由于这个原因,Java开发高性能系统方面还是很受欢迎的,因为性能与机器语言相比稍差一些,但是你可以安全地折衷——轻便、可维护带来更快地速度

    1.4K80

    MMKV为什么可以替换SharedPreferences

    XML、JSON 注重数据结构化,关注人类可读性和语义表达能力。...ProtoBuf 注重数据序列化,关注效率、空间、速度,人类可读性差,语义表达能力不足(为保证极致的效率,会舍弃一部分元信息) MMKV特点 1.高性能 可以支持实时写入 2.稳定性非常好 3.多进程访问...我们了解到 Android 系统提供了 Ashmem 匿名共享内存的能力,发现它在进程退出后就会消失,不会落地到文件上,非常适合这个场景。 我们很愉快地提供了 Ashmem MMKV 的功能。..., 只有到达一定阈值之后才会触发键值合并, 不合并之前会导致同一个 key 存在多份 安全 使用 crc 校验, 甄别文件系统和操作系统不稳定导致的异常数据 开发成本 优 使用方式较为简单 兼容性...优 各个版本都前后兼容 虽然 MMKV 一些场景下比 SP 稍慢(如: 首次实例化会进行数据的复写剔除重复数据, 比 SP 稍慢, 查询数据时存在 ProtocolBuffer 解码, 比 SP

    2.5K10

    【翻译】30多个短小而又专业的最佳开发者建议

    应大家的请求为成为一名更优秀的开发者,这里有一些从的经验吸收的小巧而专业的小窍门来助你一臂之力。所以,如果你决定从事开发或者已经是一名开发者的话,那么你算是找对地方了。...进一步熟悉内部框架 并不是告诉你怎样去熟悉文档,指的是实实在在的框架的源码。见过很多开发者很害怕查看或者深入框架的内部,探索其实际工作原理和不同的模块之间是如何正确地一起运作。...如果你需要提升你的技能,那么请克服对 SDK 内部工作机制的恐惧感,并开始和它成为好朋友吧。 2. 尝试克服对未知的害怕( FoMo ) 系统很大,非常大。你不可能在一两个月内完全掌握。...小贴士:碎片广播和开发者后台是两个你开始行动的超酷资源广播电台。 12. 不要过于工程化,现实点。 这不仅仅发生在自己身上,同时一些和我工作的其他开发者伙伴身上也看到了。...尝试着和你团队的 UI 以及 UX 设计师做更多的沟通和交流的机会,你将会更加深入地了解应用设计。 小贴士:读一读这本书如果你对理解设计如何工作的原理感兴趣的话 14.

    65320

    为高效学习神器 Anki 部署一个专属同步服务器

    即便如此,大家熟悉单词的过程可能还会有一个误区,比如上面这个单词,你在学习的过程可能会忍不住去想这个单词中文里究竟是什么意思,甚至可能会在心里默念的中文意思,即使你看了图片和英文解释,你心里可能还会忍不住去想...你能 get 到这个单词所表达的那种感觉就行了,不要再去思考如何用中文来描述,那样反而吃力不讨好。...下面言归正传,相信有很多小伙伴和我一样使用 Anki 来学习英文单词或者其他的知识,但是 Anki 的同步服务器在国外,还是一个个人项目,带宽很小,同步速度很慢,如果我们想在多个客户端之间同步学习进度和新增的知识点...目前桌面客户端和客户端都可以使用自定义服务器,惟独 iOS 客户端不可以,iPhone 和 iPad 用户可以不用往下看了。...端不需要安装插件,直接配置即可,的 AnkiDroid 版本是 2.15.6。你可以通过「设置 -> 高级设置 -> 自定义同步服务器」找到配置页面。

    1.3K50

    聊聊编程语言的选择

    后端、桌面程序、 APP、大数据等等,但凡你能想到的东西,Java 都有现成的开发工具和方便的类库框架,就是你写更少的代码、更快地完成开发。...再加上前几年我国移动互联网的发展, APP 大肆开道那会儿,Java 作为的主要开发语言,被大推了一波。...所以学习 C 的过程能让我们接触到更多底层的概念(比如自己分配和维护内存),有助于我们日后写出性能更高的程序。也是因为这点,C 语言很适于操作系统、底层软件、各种嵌入式系统和软硬件开发。...SQL SQL 是数据库查询语言,可以从数据库查询数据、操作数据。想从事后台开发、数据库管理相关工作的同学必须把学好。...如果对编程只是出于兴趣,或者想做些小工具,就学 Python 或者前端吧~ ---- 最后,希望大家记住,第一门编程语言并不等于你找工作的语言。

    1.3K40

    第十夜 亚当的诞生

    这一讲将介绍如何内部直接进行HTTP通信。 《亚当的诞生》,西斯廷礼拜堂的吊顶画,米开朗基罗之作。当时的教皇强迫沉迷于雕塑的米开朗基罗画巨幅壁画。...米开朗基罗认为这是浪费自己的才华,充满愤怒的作画。当然,他又成功了。 ? 描述 这一讲将使用JSON,将数据库备份到远程的数据库。反过来也将从远程数据库抓取条目,并放入的数据库。...相关的知识点包括: 线程 HTTP通信 JSON 增加ActionBar 首先在首页上增加一菜单,用于触发下载和上传功能。这是通过ActionBar实现的。...为了确保界面的流畅,规定网络访问不能在负责图画界面的主线程中进行。所以,我们必须把网络访问放在一个新的线程。我们通过异步的方式进行网络访问,将在下一部分介绍。...程序的JSONObject和JSONArray用于解析接收到的JSON字符串。 使用AsyncTask AsyncTask背景进程工作

    1.1K90

    2021,编程语言如何选择?

    后端、桌面程序、 APP、大数据等等,但凡你能想到的东西,Java 都有现成的开发工具和方便的类库框架,就是你写更少的代码、更快地完成开发。...这些正好符合企业的需求:老板给钱,就是希望你能够快速完成工作,而且最好不出意外事故。 再加上前几年我国移动互联网的发展, APP 大肆开道那会儿,Java 作为的主要开发语言,被大推了一波。...所以学习 C 的过程能让我们接触到更多底层的概念(比如自己分配和维护内存),有助于我们日后写出性能更高的程序。也是因为这点,C 语言很适于操作系统、底层软件、各种嵌入式系统和软硬件开发。...[image-20210810173111028.png] SQL SQL 是数据库查询语言,可以从数据库查询数据、操作数据。想从事后台开发、数据库管理相关工作的同学必须把学好。...如果对编程只是出于兴趣,或者想做些小工具,就学 Python 或者前端吧~ --- 最后,希望大家记住,第一门编程语言并不等于你找工作的语言。

    94931
    领券