Android数据存储之:SharedPreferences

转载 2015年11月18日 11:25:52

转载来自:http://www.cnblogs.com/wisekingokok/archive/2011/09/16/2177833.html

 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。(比如存储用户简单的登录信息,之后方便直接查询。比如存储一个键值对来判断是不是刚安装软件,以此进入引导页面)其存储位置在/data/data/<包名>/shared_prefs目录下。

SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:

  一、根据Context获取SharedPreferences对象

  二、利用edit()方法获取Editor对象。

  三、通过Editor对象存储key-value键值对数据。

  四、通过commit()方法提交数据。

  具体实现代码如下:

Context context = ConfirmOrderActivity.this;
SharedPreferences sp = context.getSharedPreferences("userCache", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("username", username);
editor.putInt("INT_KEY", 0);
editor.putBoolean("BOOLEAN_KEY", true);
editor.commit();
	
getSharedPreferences(name,mode)
name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索这个件)
mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和 MODE_WORLD_WRITEABLE。
取值:

//getXxx(key,defValue)
//如果preference存在,则返回preference的值,否则返回defValue
 sp.getString("STRING_KEY", "none");
 sp.getBoolean("BOOLEAN_KEY", true);

  这段代码执行过后,即在/data/data/com.test/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。如图所示: 

   SP.xml文件的具体内容如下:

1 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
2 <map>
3 <string name="STRING_KEY">string</string>
4 <int name="INT_KEY" value="0"/>
5 <boolean name="BOOLEAN_KEY" value="true"/>
6 </map>

  在程序代码中,通过getXXX方法,可以方便的获得对应Key的Value值,如果key值错误或者此key无对应value值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。如下图运行结果中因为并无值为"NOT_EXIST"的Key,所以Log打印出的是其默认值:“none”。在访问一个不存在key值这个过程中,并无任何异常抛出。  

  SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其只能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。



应用实例:app的引导页面的实现(只有刚安装的时候进入)

实现的重点是解决为什么安装完成后,第一次进入时有引导页面,之后再打开app,都不会出现。

原理:使用SharedPreferences

     在欢迎页面中加判断是不是第一次进软件,用preferences.getBoolean("firststart", true),第一次进软件的时候,这个不会找到值,所以用默认的true,这个时候跳转到引导页面,同时更改"firststart"的值:editor.putBoolean("firststart", false);下次进入的时候,if判断就为false,所以不跳引导页面,直接执行欢迎页面


SharedPreferences preferences = getSharedPreferences("phone", Context.MODE_PRIVATE);
SharedPreferences.Editor editor;
// 判断是不是首次登录,
if (preferences.getBoolean("firststart", true)) {
   //getBoolean(key,defValue)参数 key->获取的preference的名称,
   //defValue 当此preference不存在时返回的默认值
   //如果preference存在,则返回preference的值,否则返回defValue。
   editor = preferences.edit();
   // 将登录标志位设置为false,下次登录时不在显示首次登录界面
   editor.putBoolean("firststart", false);
   editor.commit();
   Intent intent = new Intent(SplashActivity.this,GuideActivity.class);
   startActivity(intent);
   finish();
}




Android中的5种数据存储方式之——SharedPreferences

Android中的5种数据存储方式之——SharedPreferences简介 SharedPreferences是Android平台上一个轻量级数据存储方式,用来保存应用的一些常用配置,比如Acti...
  • zhan1350441670
  • zhan1350441670
  • 2015年07月27日 19:06
  • 1821

SharedPreferences数据的两种保存方法: apply、commit

(转载)http://tanqi0508.blog.163.com/blog/static/1883557772012111104326404/ SharedPreferences的基本概念...
  • u010746364
  • u010746364
  • 2016年06月21日 14:58
  • 3557

Android中SharedPreferences和序列化结合保存对象数据

http://blog.csdn.net/ykttt1/article/details/8782875 前言:        最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把...
  • zhhtao89
  • zhhtao89
  • 2015年06月15日 21:23
  • 4410

Android数据存储1:文件、SharedPreferences和获取sd卡信息

  • 2014年03月05日 22:21
  • 1.43MB
  • 下载

Android数据存储——SharedPreferences(登入记住密码)

  • 2017年10月10日 16:27
  • 235KB
  • 下载

Android基础 布局、数据存储访问、XML系列化解析和SharedPreferences入门

  • 2014年06月27日 11:06
  • 3.63MB
  • 下载

Android开发之数据存储的四种方式之SharedPreferences

  • 2015年11月25日 09:17
  • 1.89MB
  • 下载

Android数据存储——SharedPreferences(记录应用被打开的次数)

本文通过一个实例记录应用被打开的次数来简单演示一下SharedPreferences的应用:当用户第一次打开应用时系统在本地创建SharedPreferences来记录使用App被打开的次数。...
  • u011838944
  • u011838944
  • 2015年04月08日 15:00
  • 1435

android框架搭建——封装一个属于自己的数据存储工具类(sharedPreferences篇)

之前的几篇博文中提到过封装网络工具类,那么在发送请求并获取一个JSONObject对象之后,如何便捷的进行json解析和数据存储便成了我们要考虑的问题,在此分享一下自己在使用了诸多工具之后的一点心得。...
  • cai554112503
  • cai554112503
  • 2015年11月30日 22:24
  • 1031

Android SharedPreferences数据存储原理解析及使用示例

一、SharedPreferences简介    SharedPreferences是基础key-value(键值对)来存储一些轻量数据的存储方式,特别适用于保存软件配置参数。使用SharedPref...
  • fjnu_se
  • fjnu_se
  • 2017年06月05日 00:25
  • 181
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android数据存储之:SharedPreferences
举报原因:
原因补充:

(最多只允许输入30个字)