android SharedPreferences的使用优化

本文介绍如何高效使用Android中的SharedPreferences来保存数据。通过减少commit次数并合理使用Editor对象,可以显著提高数据存储效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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


就这么简单。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值