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

SharedPreferences提交方法在颤动中显示不推荐使用

SharedPreferences是Android平台上用于存储轻量级键值对数据的一种机制。它提供了一种简单的方式来保存和获取应用程序的配置信息或其他小型数据。

SharedPreferences提交方法在颤动中显示不推荐使用,主要是因为SharedPreferences的提交方法是同步的,即在调用提交方法后,会阻塞当前线程直到数据写入完成。这种同步的提交方式可能会导致在主线程中执行耗时操作,从而引起应用的卡顿或ANR(Application Not Responding)问题。

为了避免这个问题,推荐使用SharedPreferences的apply()方法来代替提交方法。apply()方法是异步的,它会立即将数据写入内存中的SharedPreferences对象,并在后台线程中异步写入磁盘。这样可以避免阻塞主线程,提高应用的响应速度和用户体验。

使用SharedPreferences的apply()方法的示例代码如下:

代码语言:txt
复制
SharedPreferences sharedPreferences = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("key", "value");
editor.apply();

在上述代码中,我们首先通过getSharedPreferences()方法获取SharedPreferences对象,然后通过edit()方法获取SharedPreferences.Editor对象,接着使用Editor对象的putString()方法存储键值对数据,最后调用apply()方法异步提交数据。

SharedPreferences适用于存储一些简单的配置信息或用户偏好设置等数据,它的读写速度较快,适用于轻量级的数据存储需求。对于需要存储大量结构化数据或需要频繁读写的情况,推荐使用其他更适合的数据存储方式,如SQLite数据库或文件存储等。

腾讯云提供了云数据库Redis作为一种高性能的内存数据库,可用于存储和读取键值对数据。您可以通过腾讯云云数据库Redis产品了解更多信息:腾讯云云数据库Redis

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

什么是线程组,为什么 Java 推荐使用

Java 的线程组是一个 ThreadGroup 类对象,它充当了一个父容器,可以将同一类线程分成一组,并提供追踪这些线程状态、统计信息及管理这些线程的方法。...在线程组,如果发生未捕获异常,可以通过 Thread.UncaughtExceptionHandler 进行处理。 Java ,虽然线程组是一种功能强大的机制,但实际上并不推荐使用。...例如,线程组无法在运行时对线程进行方法注入、切换线程或暂停线程等高级操作。...3、容易引起歧义 Java ,虽然 ThreadGroup 的设计旨在通过将一组线程分到同一个容器来轻松管理和控制它们,但如果使用错误,可能会导致线程状态。...因此, Java ,线程组已基本过时,推荐使用 Executor 框架等新的更实用的工具来进行线程管理。

27520

Java 为什么推荐 while 循环中使用 sleep()

前言最近逛 CSDN 看到一篇文章,文章大意是说为什么循环中推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...比如微服务体系,客户端上报实例状态,或者服务端检测客户端状态都会使用定时轮询的机制。...比如一些用户登录场景,当用户登录状态改变时,发送登录事件进行后续处理,比如登录通知等等等待和唤醒等待和唤醒机制一般适用于等待时间较长的场景,因为等待和唤醒是一个性能消耗比较大的操作;等待时间不是很长的场景可以使用轮询机制... Java AQS 等待获取锁和线程池任务为空等待新任务时,会使用等待和唤醒操作轮询机制 和 等待和唤醒 一般会结合使用,避免线程频繁的挂起和唤醒。...我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。

88630

关于 java 的 set,get方法,而为什么推荐直接使用public

我不知道有没有人遇到过,有一段时间,我都觉得那些 set,get的用处何在,我直接写一个public直接拿不就行了,多爽,但是随着使用的频繁,越来越想去搜索一下这个问题,而不是按照官方的推荐,前辈们的使用都是建议...这里引入其中的一句话: 在任何相互关系,具有关系所涉及的各方都遵守的边界是十分重要的事情,当创建一个类库时,就建立了与客户端程序员之间的关系,他们同样也是程序员,但是他们是使用你的类库来构建应用...即使你希望客户端程序员不要直接操作你的类的某些成员,但是如果没有任何访问控制,将无法阻止此事发生。所有的东西都将赤裸裸的暴露在世人面前。...补充说明,set字面意思设置,get获取,我们了解一下java面向对象编程的封闭性与安全性,private 修饰的set get方法方法封闭了一个特定类,其他类就无法对其变量进行方法,这样就提高了数据的安全性...一些杂谈:这些只是来自我一个菜鸡自己的想法,当然对于很多大神来说不值一提,可能以后我会有更深入的理解,但是至少,程序员这条路上,不想盲目的去使用一些东西,或者说不想单纯只是去听别人的一些看法。

1.4K20

APP启动引导页的制作,用ViewPager实现翻页动画

---- 1.SharedPreferences##### SharedPreferences是一种Android提供的,简易的用于在手机上永久化保存数据的类,这个轻量级的类保存数据时,使用常见的...为了使用SharedPreferences,需要以下几步来实现 第一步:得到 SharedPreferences 对象,Android 主要提供了三种方法来得到此对象,如下代码所示 //1....Context 类的 getSharedPreferences()方法,此方法传入的两个参数: 第一个参数用于指定 SharedPreferences 文件的名称,如果 指 定 的 文 件 ...; //调用调用 commit()方法将添加的数据立即提交,不过AS推荐使用apply(),区别请看下方网址 http://blog.csdn.net/s04103037/article...使用第一步的方法后,可以直接使用各种get方法取得相应类型的数值。

1.9K10

Android数据存储之SharedPreferences

我们平常在QQ或微信上登录账号时会发现,如果之前登录过账号,则在用户名的输入框中会存在之前输入过的账号信息,这些用户名信息是如何自动显示界面输入框的呢?...其实自动QQ或微信的登录界面显示的用户名信息是存储QQ或微信的本地数据。...一般少量的数据会存储SharedPreferences文件,大量的数据还是需要存储SQLite数据库的,所以用户名信息会存储SharedPreferences文件。...需要注意的是,操作完数据后,一定要调用commit()方法进行数据提交,否则所有操作生效。...2、读取与删除SharedPreferences文件的数据 前面讲解了如何将数据存入到SharedPreferences文件,当我们需要使用或删除SharedPreferences文件的数据时,我们该如何读取或删除

1.1K40

Android数据存储之SharedPreferences

我们平常在QQ或微信上登录账号时会发现,如果之前登录过账号,则在用户名的输入框中会存在之前输入过的账号信息,这些用户名信息是如何自动显示界面输入框的呢?...其实自动QQ或微信的登录界面显示的用户名信息是存储QQ或微信的本地数据。...一般少量的数据会存储SharedPreferences文件,大量的数据还是需要存储SQLite数据库的,所以用户名信息会存储SharedPreferences文件。...需要注意的是,操作完数据后,一定要调用commit()方法进行数据提交,否则所有操作生效。...2、读取与删除SharedPreferences文件的数据 前面讲解了如何将数据存入到SharedPreferences文件,当我们需要使用或删除SharedPreferences文件的数据时,我们该如何读取或删除

1.1K30

SharedPreferences 详解(多进程,存取数组解决方案)

通过apply()或者commit()方法提交数据。 二、SharedPreferences相关api SharedPreferences.Editor api:完成数据写入操作 ?...综合上述,由于一个进程,sharedPreference是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit的...如果不关注返回值或在程序的main线程使用时,推荐使用apply(). 2. apply介绍:public abstract void apply ()         区别:commit将同步的将数据写到...preferences;apply立即更改内存SharedPreferences,但是开始异步提交到磁盘。...由于SharedPreferences进程是单实例的。忽悠返回值的前提下,取代任何实例的commit或apply都是安全的。

1.5K90

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

SharedPreferences实现详解 ---- 我们Android开发,如果想要保存一个相对较小的键值对集合,则应使用SharedPreferences API。...MODE_MULTI_PROCESS模式 我们通常调用getSharedPreferences方法时,使用默认模式即可,也是google推荐的方式。...Context.MODE_MULTI_PROCESS是多线程共享模式,理论上可以做到多进程数据共享功能,但是,此功能已废弃,建议使用了。...sp如果是优先级较低子线程执行sp的初始化工作,则sp加载过程可能会变的很长。 sp提交时,如果在ui线程中使用commit同步提交,则可能会导致因等待而产生的ANR问题。...sp文件执行apply写入时,至少要等到100ms以上。 sp的最佳实践 推荐使用sp存储一些数据量较小的应用配置类信息。

1.6K20

附详尽答案,新版精选Android中高级面试题--二

多进程使用及注意事项(http://zmywly8866.github.io/2015/09/09/sharedpreferences-in-multiprocess.html) 3、SharedPrefrences...apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后操作,...由于一个进程,sharedPreference是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit的。...该方法ViewGroup中有,View(包含 ViewGroup)是没有的。一旦拦截,则执行ViewGroup的onTouchEvent,ViewGroup处理事件,而接着分发给View。...尽量使用点9图片。 使用与密度无关的像素单位dp,sp 引入android的百分比布局。 切图的时候切大分辨率的图,应用到布局当中。小分辨率的手机上也会有很好的显示效果。

1.1K20

让源码告诉你:Android 不要滥用 SharedPreferences(上)

应用通常做一些简单数据的持久化存储。SharedPreferences 作为一个轻量级存储,所以就限制了它的使用场景,如果对它使用不当可能会引发“严重后果”。...的首次加载机制就已经明确了,每个 SharedPreferences 存储都会对应一个 name.xml 文件,使用时,系统通过异步线程一次性将该文件内容加载到内存,保存在 Map 容器。...不同之处在于 enqueueDiskWrite 方法,如果当前是 commit 提交,则将数据写入文件任务在当前线程执行;否则 apply 提交则将写入文件任务工作线程完成,看下详细过程: @Override...分析到这里关于 SharedPreferences 数据提交过程:commit 发生在当前线程,apply 发生在工作线程,如果要保证 I/O 操作阻塞 UI 线程我们可以优先考虑使用 apply 来提交修改...优化建议 1、不要存放大的 key 或 value SharedPreferences ,否则会一直存储在内存(Map 容器)得不到释放,内存使用过高会频繁引发 GC,导致界面丢帧甚至 ANR

1.1K20

【专业技术】Android数据保存之SharedPreferences

前言: 程序处理的大部分问题都与数据有关,读取数据显示UI上,读取的数据可以是本地的,也可以是网络的。保存用户数据到存储空间,可以是本地的数据库,文件等,也可以是保存到网络服务器。...总之大部分的程序都是和数据打交道。Android数据保存比较方便灵活,今天就按照官网说说数据保存。...大多数Android应用程序都需要存储数据,Android生命周期方法onPause,你可以保存用户程序的进度数据,在用户再次进入程序时进行读取恢复。...,也不关心提交是否成功可以用apply来代替commit; 2、apply是先把数据更改提交到内存,然后再异步保存到磁盘上,而commit这两个操作是同步的,所以进行频繁提交数据更改时apply更为高效...获取数据很简单,分两步: 1、获取SharedPreferences对象; 2、调用get方法获取key对应的值; 以上就是利用SharedPreferences进行数据保存的知识,基本上包含了所有使用

1.4K70

手机卫士关闭自动更新

保存数据的四种方式,网络,广播提供者,SharedPreferences,数据库 获取SharedPreferences对象,通过getSharedPreferences()方法,参数:名称,模式 例如...,”update” false 调用Editor对象的commit()方法提交数据 查看/data/data/包名/shared_perfs/config.xml这个生成的xml文件 使用命令行adb...shell cd 到上面的目录,使用cat命令查看文件 调用SharedPreferences对象的getBoolean()方法,得到保存的数据,参数:键,默认值 进行判断,状态设置为ture,设置文本内容...Runable对象,延迟的毫秒数 使用匿名内部类继承Runable对象,重写run()方法方法里面跳转到主页 升级进度的TextView部分,默认隐藏,android:visibility=”gone...” gone是隐藏并空出位置 在下载过程的回调函数里面,这一瞬间显示出来 调用TextView对象的setVisibility(View.VISIBLE) SettingActivity: package

1.1K50

源码分析多进程下的SharedPreferences

getSharedPreferences方法来获取SharedPreferences对象,Context,getSharedPreferences方法是一个抽象方法,没有具体实现 public abstract...,就是将值提交到内存,从代码上也可以看出来,就是将Editor的所有put进去的值添加到SharedPreferences的mMap成员变量。...3)当需要进行写入的时候,则需获取接口Editor方法(其实现类为EditorImpl)提交方法apply()或commit()都会将所有put进去的值添加到SharedPreferencesImpl...同时,MODE_MULTI_PROCESS的模式也已经被Google弃用,多进程之间的数据共享Google推荐我们使用SharedPreferences,而是使用例如ContentProvider这种方式...同时,通过源码我们发现,如果对存储的成功与否的结果并不关心的话,使用apply方法进行提交可以性能上有一定的优化,因为apply方法是在线程池进行文件的写入,而commit方法则是直接在当前线程进行文件的写入的

40510

SharedPreferences存储数据

使用这个可以不同的Activity调用并获得里面保存的值。这个貌似是把里面的内容保存在了一个xml文件里。...Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个...1、使用SharedPreferences保存数据方法如下: //实例化SharedPreferences对象(第一步)  SharedPreferences mySharedPreferences..., Toast.LENGTH_LONG).show(); 执行以上代码,SharedPreferences将会把这些数据保存在test.xml文件,可以File Explorer的data/data...", "");  //使用toast信息提示框显示信息  Toast.makeText(this, "读取数据如下:"+"\n"+"name:" + name + "\n" + "habit:" +

2.1K100

安卓开发_数据存储技术_SharedPreferences

有两种方式可以获得SharedPreferences对象 1、getSharedPreferences():  如果需要多个使用名称来区分的共享文件,则可以使用方法,其第一个参数就是共享文件的名称。...对于使用同一个名称获得的多个SharedPreferences引用,其指向同一个对象 2、getPreferences():              如果activity仅需要一个共享文件,则可以使用方法...向SharedPreferences增加值的方法如下 1、调用SharedPreferences类的edit()方法获得SharedPreferences对象 2、调用诸如putString(),putInt...()等方法增加相应类型的值 3、使用commit()方法提交新的值 从SharedPreferences读取值时,主要使用该类定义的getXXX()方法。...47 48 //如果在另一个activity获取SharedPreferences存储的数据 ,要加上下面这行代码,同一activity

1.1K80

羊皮书APP(Android版)开发系列(三)APP引导页启动控制类

基本上一个完整的APP都会有一个引导页,APP首次安装或APP更新后第一次打开时显示,这个逻辑是很通用的,所以写成一个工具类,方便使用。...();// 提交修改 } /** * * 基本功能:取得SharedPreferences存储的String类型数据 * 编写:王杰 *...();// 提交修改 } /** * * 基本功能:取得SharedPreferences存储的Int类型数据 * 编写:王杰 *...简要说明一下:使用这个工具类,我们是根据APP的versionName来进行判断的,规定versionName名字不少于三位(如:1.0.0,1.1.2),compareVersion方法用来判断两个版本的大小...Application类初始化,我的Application 类名字是ParchmentApplication。

57430

Android UI设计与开发之实现应用程序只启动一次引导界面

,今天的内容主要是教大家的应用程序只有第一次启动的时候显示引导界面,以后启动程序的时候就不再显示了。...其实要想实现这样的效果,只要使用SharedPreferences类,就会让程序变的非常简单,下面来详细介绍一下这个类的使用方法 一、SharedPreferences的详细介绍和用法 SharedPreferences...SharedPreferences使用方法: <1 使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由...commit方法相当于数据库事务提交(commit)操作。...的使用方法,其中创建的Preferences文件存放位置可以Eclipse查看: DDMS- File Explorer /<package name /shared_prefs/setting.xml

61720

安卓第六夜 凡高的自画像

主界面再次调出数据,并显示。相关知识点包括: 启动Activity。利用Intent,启动一个新的Activity。 文本输入。增加EditText输入栏,让用户输入文本信息。 数据存储。...提交数据后,这个Activity将通过EditText的getText()方法获取字符输入。提交的字符串将使用SharedPreferences存储起来。...使用SharedPreferences.Editor类对象写入数据时,我们调用了putString()方法,以存储字符串类型的数据值。commit()方法将执行写入。...根据安卓的规定,MainActivity第一次运行,以及每次从暂停复苏时,都会调用该方法。用户SelfEditActivity修改返回后,就可以立即获得最新的数据。...onResume() 最后,用setText()方法,把新的数据加载到视图的TextView。 运行 "Edit Profile"输入用户信息,提交后返回主页面,效果如下: ?

1.2K70

SharePreference原理及跨进程数据共享的问题

SharedPreferences的实现原理之:持久化数据的加载 首先,从基本使用简单看下SharedPreferences的实现原理: mSharedPreferences = context.getSharedPreferences...SharedPreferences的实现原理之:持久化数据的更新 通常更新SharedPreferences的时候是首先获取一个SharedPreferences.Editor,利用它缓存一批操作,之后当做事务提交...,提交事务的时候有两种方式,一种是apply,另一种commit,两者的区别在于:何时将数据持久化到xml文件,前者是异步的,后者是同步的。...Google推荐使用前一种,因为,就单进程而言,只要保证内存缓存正确就能保证运行时数据的正确性,而持久化,不必太及时,这种手段Android中使用还是很常见的,比如权限的更新也是这样,况且,Google...,它的作用只会在getSharedPreferences的时候,才会重新从xml重加载,如果我们一个进程更新xml,但是没有通知另一个进程,那么另一个进程的SharePreferences是不会自动更新的

1.4K60

安卓开发之SharedPreferences使用

Sharedpreferences保存数据类似配置信息格式的数据,使用简单类型的key-value对 主要方法有: Boolean contains(String key):判断是否包含特定的key的数据...Sharedpreferences.Editor remove(String key):删除指定key对应数据项 Boolean commit():当Editor编辑完成调用该方法提交修改 使用SharedPreferences...由于SharedPreferences本身是接口,所以不能直接使用,只能通过Context提供的方法getSharedPreferences(String name,int mode)获取 其中mode...(“count”, 0); //显示程序使用次数 Toast.makeText(this, “程序使用次数:”+count+”次。”...对象 3)  如果需要修改其他应用的SharedPreferences数据,那需要调用edit方法写入即可 注意:这里需要在其他应用设置SharedPreferences的时候需设置成可MODE_WORLD_READABLE

1.2K80
领券