android之SharedPreferences进行数据存储

首先我们来介绍一下SharedPreferences这个接口的作用:

       我们都知道,很多时候我们对于系统依赖的一些参数设置总是会放到一个配置文件中,例如在java中我们通常会用到*.properties文件;在android中,我们也有类似于*.properties的一类文件,而这类文件在android中的对象表现形式,就是SharedPreferences。你可以认为,每个应用中使用的SharedPreferences是该应用文件的一个映射。

      现在,我们知道了,sharedPreferences接口可以让我们存储一些值。

在SharedPreferences的api说明中,我们可以看到这样一段介绍。

翻译如下:

       SharedPreferences接口一般用来访问或修改由方法getSharedPreferences(String,int)返回的设置信息。这里的设置信息都是单例唯一的,这就意味着改设置信息会被所以安装了该APK应用的客户端(手机)所共享。如果我们要想修改这些设置信息,我们则必须要通过SharedPreferences.Editor对象进行修改,至于为什么一定要获取这个Editor对象之后才可以修改呢,原因是这样的,我们前面已经说了,改配置信息会被所有的客户端共享,那就意味着同一时刻可能有好几个客户端要对配置信息中的值进行修改,这很容易出现数据修改混乱的问题,这里通过获取SharedPreferences.Editor对象就是为了保证数据的一致性。注意,到目前为止,SharedPreferences是不支持多进程的,该功能处于待添加状态。

      我们再来看看,该接口中主要的方法有哪些:

 

           

     SharedPreferences包含两个内部类,SharedPreferences.Editor和SharedPreferences.OnSharedPreferencesChangeListener;其中Editor主要在对属性设置进行修改时使用,而OnSharedPreferencesChangeListener则是在属性被修改时触发的一个事件,我们可以在里面做一些额外的动作,如根据新的属性值去触发一些页面的改变了,等等……

 

     

     至于其他的方法,都很简单,一看方法名就知道啥意思了,我就不详细介绍了。现在给大家贴一个应用的例子:

 

先上图:

然后是main.xml

activity的代码:

其他的都为默认。

---------------------------------------------------------------------

最后了,说点废话

SharedPreferences实际上是按照键值对的方式进行数据存储的,如果同一个key被设置了两次值,那么后来的值将会覆盖掉前面的值。实际上,SharedPreferences在后台是使用XML文件的格式进行存储数据的,其存储的目录为/data/data/应用包名称/shared_prefs。

如:

而且SharedPreferences对象对于存储值的格式是有严格要求的,从方法中我们可以看到,只能存储String/int/long/Float/Boolean几种类型的数据。

------------------------------------------------------------------------------------

小技巧:如果我们在当前的activity中想访问另一个activity(如cn.com.abc.activityTest)的SharedPreferences对象,我们应该如何获取呢?

  应该如下获取

 

 

--------------------------------------------------------------

最后粘贴上SharedPreferences的源码,方便查阅。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SharedPreferencesAndroid平台中用于存储轻量级数据的一种机制,它将数据存储在xml文件中,数据以key-value的形式存在。 以下是在Android Studio中使用SharedPreferences存储数据的步骤: 1. 获取SharedPreferences对象 在Activity或Fragment中获取SharedPreferences对象的方法如下: ```java SharedPreferences sharedPreferences = getSharedPreferences("my_data", Context.MODE_PRIVATE); ``` 其中,"my_data"是SharedPreferences文件的名称,Context.MODE_PRIVATE表示该文件只能被当前应用程序读取和写入。 2. 存储数据 SharedPreferences提供了多种put方法来存储数据,如putString、putInt、putBoolean等。以putString为例,存储一个字符串数据的代码如下: ```java SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("username", "Tom"); editor.apply(); ``` 其中,"username"是key,"Tom"是value,apply()方法表示提交数据,这里也可以使用commit()方法。 3. 读取数据 SharedPreferences提供了多种get方法来读取数据,如getString、getInt、getBoolean等。以getString为例,读取上面存储的字符串数据的代码如下: ```java String username = sharedPreferences.getString("username", ""); ``` 其中,"username"是key,""是默认值,如果SharedPreferences文件中没有该key,则返回默认值。 注意:SharedPreferences适合存储轻量级数据,如果需要存储大量数据或者复杂数据结构,建议使用SQLite数据库或者其他存储机制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值