Android SharedPreferences存储读取数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tq501501/article/details/74331529

需要使用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进行修改,读取的依然是之前数值。

猜你喜欢

转载自blog.csdn.net/tq501501/article/details/74331529