今天,简单讲讲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的使用优化就讲完了。
就这么简单。