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();
}




相关文章推荐

20170312_Android数据存储之SharedPreferences

一、概念                    1. 1 概念:                            SharedPreferences是一种轻型的数据存储方式,它的本质是基于...

android 简单数据存储SharedPreferences

使用Perference来实现数据的存储,用到了SharedPreferences接口和SharedPreferences内部的一个接口SharedPreferences.Editor。 调用Cont...

Android与IOS异同点对比 ( 2 ) ------ 数据存储(SharedPreferences VS NSUserDefaults)

在应用开发之中,特别是移动应用的开发,我们使用的所有数据几乎都保存在服务器之中,如果我们每一次使用数据特别是那些使用频率非常高但是表数据改动非常小的数据时(用户的头像,用户的用户名…)每次使用都从服务...

Android之利用SharedPreferences进行简单数据存储

1.SharedPreferences是Android系统提供的轻量级的数据保存方式,是将数据以最简单的方式进行永久性保存,在应用程序的使用中,用户经常会根据自己的习惯和偏好等更改应用程序的设置,或设...

Android学习之SharedPreferences数据存储

SharedPreferences 1、简介: 这是一个轻量级的数据存储类。比较适合于保存软件配置参数,其背后存储的文件是xml文件,是以key-value键值对存储数据方式。   2、获取S...

Android数据存储---SharedPreferences详解及应用

在Android开发中,如果站在开发者的角度来讲,其存储方式大致分为5种,下面我就先简单介绍一下这几种存储方式,在本篇博文中谈谈SharedPreferences...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android数据存储之:SharedPreferences
举报原因:
原因补充:

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