Android开发教程:数据储存之SharedPreferences

转载 2015年11月18日 12:03:45

转:http://liuzhichao.com/p/522.html


在我们使用的桌面软件中,通常会有一个“选项”菜单,选项是对软件的常规或核心设置。在JavaSE和JavaEE中常用的是*.properties,在Windows平台下常使用*.ini文件。在Android中我们使用SharedPreferences来完成这种对配置文件的读写。SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件。

  1. getPreferences():获取到作用域是本Activity的preference,是Activity类中的方法,只需指定mode
  2. getSharedPreferences():获取到作用域是本应用程序的preference
  3. getDefaultSharedPreferences():每个应用有一个默认的偏好文件preferences.xml,使用getDefaultSharedPreferences获取

SharedPreferences常用的属性和方法

方法名称 描述
public abstract boolean contains (String key) 判断SharedPreferences是否包含特定key的数据
public abstract SharedPreferences.Editor edit () 返回一个Edit对象用于操作SharedPreferences
public abstract Map<String, ?> getAll () 获取SharedPreferences数据里全部的key-value对
getXXX(String key,XXX defvlaue) 获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。

Editor接口的常用方法

方法名称 描述
public abstract SharedPreferences.Editor clear () 清空SharedPreferences里所有的数据
public abstract boolean commit () 当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改
public abstract SharedPreferences.Editor putXXX (String key, boolean XXX) 向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值
public abstract SharedPreferences.Editor remove (String key) 删除SharedPreferences里指定key对应的数据项

 

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name.int mode)来得到一个SharedPreferences实例

name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

下面是一个使用SharedPreferences的简单例子,通过SharedPreferences记下程序运行的次数:

public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		sp = getSharedPreferences("data", MODE_PRIVATE);
		Editor editor = sp.edit();
		int count = sp.getInt("count", 1);
		new AlertDialog.Builder(this)
		.setMessage("这是您第"+count+"次使用本软件")
		.create()
		.show();
		editor.putInt("count", ++count);
		editor.commit();

	}

读写其他应用SharedPreferences

在有时的开发过程中,我们可能要访问其他的应用程序的SharedPreferences,要实现这样的功能,我们必须要保证要访问的那个应用程序的SharedPreferences的访问权限要是MODE_WORLD_READABLE,这表明该SharedPreferences可以被其他应用程序读取,如果指定的MODE_WORLD_WRITEABLE表明该SharedPreferences可以被其他应用程序读取写入其实现思路如下

1、  获得其他应用程序对应的Context

2、  通过这个Context得到这个应用程序的SharedPreferences,然后再利用这个SharedPreferences读取内容

// 获取其他应用程序的Context
        Context otherContext = createPackageContext("com.jiahui.preferences",CONTEXT_IGNORE_SECURITY);
      // 获取其他应用程序的SharedPreferences
       SharedPreferences preferences = otherContext.getSharedPreferences("test",Context.MODE_WORLD_READABLE);

Android SharedPreferences保存/获取简单本地数据

使用SharedPreferences 可以很方便的保存一些简单的数据。可以保存的数据类型为一些基本数据类型:String\ int\ long\ float\ boolean;集合类:Set,但是里...
  • SeanHuang1661
  • SeanHuang1661
  • 2016年03月07日 11:24
  • 3422

Android数据储存之SharedPreferences详解

使用步骤: 1、得到SharedPreferences对象 2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。...
  • zhalcie2011
  • zhalcie2011
  • 2017年10月25日 18:27
  • 65

Android数据储存——SharedPreferences储存

SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data//shared...
  • acidsweet
  • acidsweet
  • 2014年04月30日 15:31
  • 1044

安卓数据持久化:文件存储、SharedPreferences存储以及数据库存储

Android系统中主要提供了三种方式用于简单的实现数据持久化功能: 文件存储(手机自带的内存)、SharedPreferences存储以及数据库存储 当然还可以用sd卡存储 读入写出 下面是疯狂ja...
  • hll174
  • hll174
  • 2015年05月15日 22:12
  • 1771

数据储存--SharedPreferences

SharedPreferences是一种轻型的数据储存方式,其本质是给予XML文件储存key-value键值对数据,通常用来存储一些简单的配置信息。SharedPreferences对象本身只能获取数...
  • EisblumeMeow
  • EisblumeMeow
  • 2016年08月17日 14:16
  • 282

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

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedP...
  • qq_32088279
  • qq_32088279
  • 2016年03月04日 20:20
  • 64

SharedPreferences保存数组

//用SharedPreferences保存/取出arrayList数组/** * desc:保存对象 * @param context * @param key * @param o...
  • ziyiwangchen
  • ziyiwangchen
  • 2016年06月30日 16:29
  • 525

使用SharedPreferences保存EditText中的内容

前些日子一直忙着问SharedPrefences的用法,发现网上大多数都是用来保存用户名和密码,虽然可以借鉴,但有源码更简单明了一些,特在此记录。 做了个note,xml全局EditText覆盖,退出...
  • Jeowoo
  • Jeowoo
  • 2015年06月02日 08:31
  • 1485

【Android 开发教程】ListView的基本使用

这段时间公司工作比较忙,又加上自己要做点小项目,所以很久没更新博客了。言归正传,今天总结一下Android中的列表控件:ListView和Spinner。ListView可以垂直并可滑动地地显示一些信...
  • manoel
  • manoel
  • 2012年05月19日 11:19
  • 8465

将数据储存到SharedPreferences

1.activity_main.xml    xml version="1.0" encoding="utf-8"?> LinearLayout android:id="@+id/acti...
  • ESUCC
  • ESUCC
  • 2017年06月15日 10:17
  • 76
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android开发教程:数据储存之SharedPreferences
举报原因:
原因补充:

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