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本身已经做了内存缓存。

 

 

 

    原文作者:可爱的you
    原文地址: https://blog.csdn.net/u011339364/article/details/90370507
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞