首页
学习
活动
专区
工具
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

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

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

    1.2K30

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

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

    1.9K51

    Android持久化保存cookie的方法

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

    2.2K20

    android cookie持久化

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

    1.5K90

    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

    2021,编程语言如何选择?

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

    94831

    Raspberry Pi上重温Amiga 【Gaming】

    当我开始红帽工作时,发现一个复古系统周围有一个充满激情的社区,尤其是Amiga。我们总公司有一个专门用于突破旧系统的会议室,的红帽里的同事也向捐赠了游戏并慰问了。...下载 UAE4Droid 下载 来源 Uae4all2 下载 来源 Uae4arm 下载 来源 喜欢FS-UAE,它可以许多平台上使用。...系统和Chromebooks上的Amiga 的Samsung Tab 10、Nexus 7和Chromebook上设置模拟器很简单。...都试过了,而且喜欢Amibian,因为离拉斯宾比较近,所以我喜欢Amibian,而且配置也是经过深思熟虑的。这两个发行版都非常精简,不包含太多软件包来安装“膨胀”。...这里有一些地方在线学习更多关于这个标志性的系统如何进一步推动

    1.4K20
    领券