本文主要是介绍Android SharedPreferences的commit与apply区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android提供了一个简单快捷的保存键值对到文件的类SharedPreferences。通过SharedPreferences读写参数会遇到一些问题:
- API25中,apply方法的注释。大致意思就是apply是一个原子请求(不需要担心多线程同步问题)。commit将同步的把数据写入磁盘和内存缓存。而apply会把数据同步写入内存缓存,然后异步保存到磁盘,可能会执行失败,失败不会收到错误回调。如果你忽略了commit的返回值,那么可以使用apply替换任何commit的实例。
- 简单说就是除非你需要关心xml是否写入文件成功,否则你应该在所有调用commit的地方改用apply。
- SharedPreferences是个单例,所以任意Context拿到的都是同一个实例。
- SharedPreferences在实例化的时候会把SharedPreferences对应的xml文件内容全部读取到内存。
- 对于非多进程兼容的SharedPreferences的读操作是从内存读取的,不涉及IO操作。写入的时候由于内存已经保存了完整的xml数据,然后新写入的数据也会同步更新到内存,所以无论是用commit还是apply都不会影响立即读取。
- 我们需要对SharedPreferences在包装一层内存缓存来提高性能吗?完全不需要,因为SharedPreferences本身已经做了内存缓存。
这篇关于Android SharedPreferences的commit与apply区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!