android SharedPreferences的使用优化



今天,简单讲讲android如何优化使用SharedPreferences保存数据。


之前,我写代码是都是每次缓存一个键值对就commit一次,后来在完成看了看,发现应该是缓存完所有键值对后,再一次性存入比较好。这里记录一下。


SharedPreferences作为Android存储数据方式之一,主要特点是:
1. 只支持Java基本数据类型,不支持自定义数据类型;
2. 应用内数据共享
3. 使用简单


之前的使用方法

1、存数据

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE);
sp.edit().putString("name", "小张").putInt("age", 11).commit();
sp.edit().putString("name", "小李").putInt("age", 12).commit();


这样每次都会创建新的Editor ,而且都次写入文件,效率比较低


优化后的使用方法

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("name", "小张");
editor.putInt("age", 11);
editor.commit();


这里当所有键值对缓存后,才一次性写入文件,效率比之前的好。


切记不要写成下面的形式,会导致数据无法存储

SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE);
sp.edit().putString("name", "小张");
sp.edit().putInt("age", 11);
sp.edit().commit();


为什么这种方式无法存储,因为sp.edit()每次都会返回一个新的Editor对象,Editor的实现类EditorImpl里面会有一个缓存的Map,最后commit的时候先将缓存里面的Map写入内存中的Map,然后将内存中的Map写进XML文件中。使用上面的方式commit,由于sp.edit()又重新返回了一个新的Editor对象,缓存中的Map是空的,所以导致数据无法被存储。


android SharedPreferences的使用优化就讲完了。


就这么简单。



猜你喜欢

转载自blog.csdn.net/bzlj2912009596/article/details/80013532