Android SharedPreferences存储读取数据

需要使用SharedPreferences保存数据时,一般代码:

/*

* @param name Desired preferences file

* @param mode Operating mode 

 *                Use 0 or {@link #MODE_PRIVATE} for the default operation, {@link #MODE_WORLD_READABLE} and {@link #MODE_WORLD_WRITEABLE} to control permissions.

*/

SharedPreferences sharedPreferences = getSharedPreferences(String nameint mode);//源码对于mode说明了三种模式,一般都是给0

SharedPreferences.Editor spe = sharedPreferences.edit();
spe.putBoolean("key", value);
spe.commit();

这样很简单就保存好了,读取的时候

sharedPreferences .getBoolean("key"false);

 

之前遇到一个问题,在一个activity中做了一些操作,通过SharedPreferences 保存了一个value,返回上一个activity读取时发现读到的结果还是以前的结果。

考虑是否是由于一开始设置getSharedPreferences("name"0)第二个参数0导致获取的SharedPreferences 的问题。

查看源码对于参数  Mode各种模式的说明,发现MODE_MULTI_PROCESS 应该是可以用的,果然修改下代码就成功了。

 

源码对MODE_MULTI_PROCESS 的解释大致是:设置时,磁盘上的文件读取之前将检查修改,保证其他地方对文件的修改pull最新。

这对于进程之间修改同一个文件也是有用的,如果协调并发还是需要使用ContentProvider。在Android2.3之后需要手动设置此Mode,之前版本默认是支持的。

Android现在更支持的是通过BroadcastReceiver、ContentProvider、Services等方式来达到共享数据。


对于设置默认模式的SharedPreferences获取数据一直不变的根本原因, 是由于sharedPreferences根据context获取,保存在缓存区中,如果没有gc或者在使用此sharedPreferences进行修改,读取的依然是之前数值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值