安卓SharedPreferences存储Editor对象apply和commit方法区别

我最近在做个简单的项目,需要用到SharedPreferences的封装,但是提交数据保存成xml文件的时候对apply()和commit()

方法产生了疑惑,不知道这两者的区别,这里我特意总结了一下

工具类的封装-SharedPreferences封装

Android数据四种存储方式
SharedPreferences(小数据存储的时候优先使用) SQLite,ContentProvider和File(文件存储方式)
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些
简单的配置信息。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改时通过Editor对象实现
实现步骤:
1.根据Context获取SharedPreferences对象(getSharedPreferences()方法)|
Activity类中的getPreferences()方法|PreferenceManger类中的getDefaultSharedPreferences()方法
2.调用SharedPreferences对象的edit()方法获取一个Editor对象
3.通过Editor对象存储key-value键值对数据 添加布尔值数据putBoolean()方法,添加字符串putString()方法
4.调用apply()方法将添加的数据提交,完成数据的存储操作 
SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();
第一个参数为存储xml文件名,第二个参数表示0,只有当前应用程序才可以对这个文件进行读写

封装:
1.定义存取方式get/put
2.明确数据类型Int/String/Boolean

3.定义删除功能 单个/全部

SharedPreferences.Editor的apply 和commit方法的区别:

1.apply没有返回值而commit返回boolean表明修改是否成功;

2.apply是将修改数据原子提交到内存,而后异步真正提交到硬盘,而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后操作,从而降低了效率。而apply只售原子的提交到内容,后面有调用apply的函数将会直接覆盖前面的内存数据,从一定程度上提高了很多效率。

3.apply方法不会提示任何失败的提示。

由于在一个进程中,SharedPreferences是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功后且有后续操作的话,还是要用commit。

这里具体的我就不写代码了,重点在于两者的区别,而不在于讲解SharedPreferences的使用方法。


猜你喜欢

转载自blog.csdn.net/qq_32252957/article/details/80115827